当前位置: 首页 > news >正文

企业官网型网站模板下载山东建设网站公司

企业官网型网站模板下载,山东建设网站公司,什么是外链,成都房地产信息查询平台一、初始化项目结构 1.初始化vite项目 npm create vite cd vite-project npm install 2.清理项目结构 清空App.vue 删除components目录下的HelloWorld.vue组件 3.为组件的样式启用sacc或less组件 npm i sass4.初始化index.css全局样式 :root{font-size:12px } 二、封装…一、初始化项目结构 1.初始化vite项目 npm create vite cd vite-project npm install 2.清理项目结构 清空App.vue 删除components目录下的HelloWorld.vue组件 3.为组件的样式启用sacc或less组件 npm i sass4.初始化index.css全局样式 :root{font-size:12px } 二、封装es-header组件 1.允许用户自定义title标题内容 2.允许用户自定义color文字颜色 3.允许用户自定义bgcolor背景颜色 4.允许用户自定义fsize字体大小 5.组件必须固定到页面顶部位置高度45px,文字居中z-index为999 templatediv classhead-container :style{backgroundColor:bgcolor,color:color,fontSize:fsizepx}{{ title }}/div /template script import bus from ../../ulits/eventBus export default {props:{title:{type:String,default:es-header},bgcolor:{type:String,default:#007bff},color:{type:String,default:#fff},fsize:{type:Number,default:12},} } /script style scoped langscss .head-container{position: fixed;top:0;left: 0;width: 100%;height: 45px;text-align: center;line-height: 45px;z-index:999; } /style 三、基于axios请求商品列表数据 1.安装axios npm i axios -S 2.在main.js入口文件中导入并配置axios import axios from axios //配置请求的根路径 axios.defaults.baseURLhttp://localhost:3000 //将axios挂载为全局的$http自定义属性 app.config.globalProperties.$httpaxios // 从vue中按需导入createApp函数用于创建vue的实例对象 import { createApp } from vue // 导入待渲染的App组件 import App from ./App.vue import ./style.css import ElementPlus from element-plus import element-plus/dist/index.css import router from ./routers/index.js; import * as ElementPlusIconsVue from element-plus/icons-vue import axios from axios // 创建vue的实例对象 const app createApp(App) for (const [key, component] of Object.entries(ElementPlusIconsVue)) {app.component(key, component)} axios.defaults.baseURLhttp://localhost:3000 app.config.globalProperties.$httpaxios app.use(ElementPlus) app.use(router) // 指定vue控制的Dom区域把App组件的模板结构渲染到指定的el区域中 app.mount(#app)3.请求商品列表数据 四、封装es-footer组件 1.组件必须固定到页面底部位置高度50px,内容两端贴边对其z-index为999 2.允许用户自定义amount总价格渲染时保留两位小数 3.允许用户自定义totalt总数量并渲染到结算按钮中如果要结算的商品数量为0则禁用结算按钮 4.允许用户自定义isfull全选按钮的选中状态 5.允许用户通过自定义事件的形式监听全选按钮选中状态的变化并获取到最新的选中状态 templatediv classfooter-containerdivinput typecheckbox idcustom-control-label :checkedisfull changeonCheckboxChange /label forcustom-control-label全选/label/divdivspan合计/spanspan classamount{{ amount.toFixed(2)}}/span/divel-button classbtn-settle :disabledtotal0结算({{total}})/el-button/div /template script export default {props:{amount:{type:Number,dafault:0},total:{type:Number,dafault:0},isfull:{type:Boolean,default: false}},emits:[fullChange],methods:{onCheckboxChange(e){this.$emit(fullChange,e.target.checked)}} } /scriptstyle scoped langscss .footer-container{width: 100%;height: 50px;border-top:1px solid #ededed;background-color: #fff;position: fixed;bottom:0;left:0;padding:0 10px;display: flex;justify-content: space-between;align-items: center;input{vertical-align: middle; }.amount{color:red;}.btn-settle{min-width: 100px;height: 38px;border-radius: 19px;} } /style 五、封装es-goods组件 1.实现edgoods组件的基本布局 2.封装组建的6的自定义属性idthumb,title,price,count,checked 3.封装组件的自定义事件stateChange允许外界 监听组件选中状态的变化 templatediv classgoods-containerdiv classleftinput typecheckbox :idid :checkedchecked changeonCheckboxChange /label :foridimg :srcthumb alt/label/divdiv classrightdiv classtop{{ title }}/divdiv classbottomdiv classprice{{ price.toFixed(2) }}/divEsCounter :countcount :min1 numberChangenumberChange/EsCounter/div/div/div /template script import EsCounter from ./esCounter.vue export default {components:{EsCounter},props:{id:{type:String,default:,require:true},thumb:{type:String,default:,require:true},title:{type:String,default:,require:true},price:{type:Number,default:0,require:true},count:{type:Number,default:0,require:true},checked:{type:Boolean,default:false,require:true}},emits:[stateChange,countChange],methods:{onCheckboxChange(e){this.$emit(stateChange,e.target.id,e.target.checked)},numberChange(num){this.$emit(countChange,this.id,num)}} } /scriptstyle scoped langscss .goods-container{width: 100%;padding:10px;display: flex;border:1px solid #ededed;.left{width: 110px;height: 100px;display: flex;justify-content: space-between;align-items: center;img{width: 100px;height: 100px;}input{vertical-align: middle; }}.right{padding: 10px;flex:1;display: flex;flex-direction: column;justify-content: space-around;.bottom{display: flex;justify-content: space-between;align-items: center;.price{color:red;}}} } /style 六、实现合计、结算数量、全选功能 templatediv classsonEsHeader title案例/EsHeader EsGoods v-forgoods in goodsList :keygoods.id :idgoods.id :thumbgoods.thumb :titlegoods.title :pricegoods.price :countgoods.count :checkedgoods.state stateChangestateChange countChangecountChange/EsGoodsEsFooter :isfullisfull :amountamount :totaltotal fullChangefullChange/EsFooter/div /template script import EsHeader from ./EsHeader.vue import EsFooter from ./esFooter.vue import EsGoods from ./EsGoods.vue export default {components:{EsHeader,EsGoods,EsFooter},data(){return{goodsList:[],amount:0,total:0}},methods:{async getGoodsList(){const {data:res} await this.$http.get(/goodsList)this.goodsList res},fullChange(flag){this.goodsList.forEach(itemitem.state flag)},stateChange(id,checked){const findRes this.goodsList.find((item){return item.idid;})if(findRes){findRes.state checked;}this.isfull this.goodsList.every(itemitem.state);},countChange(id,count){const findRes this.goodsList.find((item){return item.idid;})if(findRes){findRes.count count;}}},created(){this.getGoodsList()},computed:{total(){let a0;this.goodsList.filter(itemitem.state).forEach(itemaitem.count)return a},amount(){let sum0;this.goodsList.filter(itemitem.state).forEach(itemsumitem.count*item.price)return sum},} } /scriptstyle scoped langscss .son{padding: 45px 0 50px 0; } /style七、封装es-counter组件能 1.渲染组件的基础布局 2.实现数量值得加减操作 3.处理min值 4.使用watc处理文本框输入的结果 5.封装numChange自定义事件 templatediv classcounter-containbutton classbtn :disablednum1 clickonSubClick -/buttoninput typenumber classcounter-input v-model.number.lazynum button classbtn clickonAddClick/button/div /template script export default {props:{count:{type:Number,default:0,require:true},min:{type:Number,default:0,require:NaN}},emits:[numberChange],data(){return{num: this.count}},methods:{onSubClick(){if(isNaN(this.min) this.num-1this.min)return;this.num--},onAddClick(){this.num},},watch:{num:{handler(newVal,oldVal){const parseRes parseInt(newVal);//不是数字或者小于1强制等于1if(isNaN(parseRes) ||parseRes1){this.num1return}// //如果新值是小数把转换的结果赋给numif(String(parseRes).includes(.)-1){this.numparseResreturn}this.$emit(numberChange,this.num)}}} } /script style scoped langscss .counter-contain{.btn{width: 34px; } .counter-input{width: 36px; } }/style
http://www.hkea.cn/news/14551739/

相关文章:

  • 重庆网络推广网站推广地方融资平台
  • 网站备案 深圳软件开发都有哪些项目
  • 网站后台如何做文件下载连接wordpress技术网主题
  • 网站内容设计要求制作网站要求
  • 微网站微信数据库设计wordpress的登录页面模板下载
  • 做好对外门户网站建设做网站用的插件
  • 做神马网站快速排名江苏常州武进区建设局网站
  • 自助建站系统wordpress同步博客插件
  • 公众号的微网站怎么做的如何说服企业做网站
  • wordpress 4.9 多站在哪网站可以做农信社模拟试卷
  • 文学类网站怎么做公司网站建设浩森宇特
  • 免费成品网站模板下载可以做设计兼职的网站有哪些
  • 肇庆网站关键词优化临沂哪里有做网站的
  • 宝塔建设网站教程qq推广的特点
  • 大网站开发语言卫浴毛巾架网站建设
  • 潍坊网站建设 选聚搜网络潍坊网站建设品牌
  • 上海互联网做网站网上免费开店怎么开
  • 银川网站建设推广鹤壁网络推广培训
  • 网站流量下降原因网站第三方微信登陆怎么做的
  • 超越时空网上书城网站建设方案wordpress侧边目录
  • 门户网站建设方案公司免费个人网页模板
  • 旅游英文网站 建设需求专业云南做网站
  • 搭配网站开发的开题报告wordpress重置密码
  • 网站续费服务商专门做母婴的网站有哪些
  • 做网站图片知识青海西宁最新消息今天
  • 重庆网站建设 熊掌号凡科微信小程序免费版怎么样
  • 如何制作网站导航江西九江怎么样
  • 网站建设怎么接单金融网站建设内容
  • 做爰全过程免费的视频网站有声音深圳网站建设首选上榜网络
  • 网站登录界面 psd网站透明背景