热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

classvue添加图片_Vue躬行记(3)——样式和表单

Vue对DOM元素的class和style两个特性做了专门的增强,即对CSS类和内联样式做了一层封装,通过v-bind指令来处理它们,而接

  Vue对DOM元素的class和style两个特性做了专门的增强,即对CSS类和内联样式做了一层封装,通过v-bind指令来处理它们,而接收的表达式既可以是简单的字符串、对象或数组,也可以是复杂的计算属性。不仅如此,Vue还为表单设计了一些语法糖,让表单处理变得尤为简单。

一、CSS类

  v-bind指令与class参数配合,就能处理CSS类,并且能接收多种类型的值。

1)对象

  v-bind:class可以接收一个对象,对象的属性名就是CSS类名,只有当其值是真值时,才能添加到DOM元素上,否则会被忽略。下面的

元素会接收数据对象中的classList,它包含两个属性warning和cur,其中cur属性保存了一个假值。

strick


  渲染出的

元素如下所示,不包含cur类。

strick

  此外,v-bind:class可简写成:class,并且能与普通的class特性共存,如下所示。

strick

2)数组

  当v-bind:class接收一个数组时,其元素既可以是CSS类名,也可以是对象,格式与之前相同,如下所示。

strick


二、内联样式

  v-bind指令与style参数配合,就能避免通过字符串拼接的方式来处理内联样式,并且也能接收多种类型的值。

1)对象

  v-bind:style可以接收一个对象,对象的属性名有两种命名方式:驼峰式和连字符分隔式,第二种就是层叠样式表中的CSS属性的命名方式。下面的

元素会接收数据对象中的cssObj,其属性采用了两种命名方式。

strick


  渲染出的

元素如下所示。

strick

  Vue允许为属性赋一个包含多个值的数组(即多重值),可让浏览器选择支持的属性,例如定义不同阶段的伸缩盒样式,如下所示。

strick

2)数组

  当v-bind:style接收一个数组时,其元素就是样式对象,并且如果出现同名的CSS属性,那么后面的会覆盖前面的。例如下面的cssObj1和cssObj2两个对象都包含line-height属性,而最终渲染出的值为1.5。

strick


3)浏览器前缀

  Vue会自动侦测浏览器样式的兼容性,并根据需要为CSS属性(例如border-radius、transform等)添加相应的浏览器前缀。

  下面的代码摘自Vue.js,其中camelize()函数可将连字符分隔式的字符串转换成驼峰式的字符串;vendorNames变量记录了三种浏览器前缀;normalize()函数会判断传入的属性是否存在于

元素的style属性中,如果不存在,就为其添加浏览器前缀,而之所以单独处理filter属性是因为Chrome的一个bug,虽然Chrome只支持-webkit-filter属性,但是style属性中保存的却是无前缀的filter。

var camelizeRE = /-(w)/g;
var camelize = cached(function(str) {return str.replace(camelizeRE, function(_, c) {return c ? c.toUpperCase() : "";});
});var vendorNames = ["Webkit", "Moz", "ms"];
var emptyStyle;
var normalize = cached(function(prop) {emptyStyle = emptyStyle || document.createElement("div").style;prop = camelize(prop);if (prop !== "filter" && prop in emptyStyle) {return prop;}var capName = prop.charAt(0).toUpperCase() + prop.slice(1);for (var i = 0; i });

三、表单

  Vue提供了v-model指令,可在表单控件上实现双向数据绑定,即修改控件的值,也会自动更新Vue实例中所对应的数据对象的属性,反之亦然。

1)v-model

  下面用一个示例来演示v-model指令的用法,文本框的初始值是“strick”,当修改元素中的值时,

元素的文本也会随之更新。


{{name}}


  而如果在控制台执行下面这条赋值语句,那么就会更新元素中的值,其实这就是Vue的双向数据绑定所起的作用。

vm.name = "freedom";

  在使用v-model指令时需要注意,表单控件的初始值得声明在数据对象的属性中,而不是value、checked或selected这些特性中。还是以之前的文本框为例,添加了一个value特性,如下所示,渲染出的控件值将是“strick”,而不是“init”。

  v-model本质上是个语法糖,它在内部会监听表单控件相关特性的变化,并触发相应的事件,其对应关系如表4所示。

530dab0a9fb9e0729d2ef7736c80307f.png
表4 v-model指令内部的对应关系

2)表单控件

  将v-model指令作用于表单控件时,其初始值常用的类型会有所不同,如下所示。

var vm = new Vue({data: {name: "", //文本框(单行和多行)checked: true, //一个复选框names: [], //多个复选框color: "", //单选框selected: "", //选择框(单选)selecteds: [] //选择框(多选)}
});

  当只使用一个复选框时,v-model指令可绑定一个布尔值;而当使用多个复选框时,v-model指令适合绑定数组,如下所示。


  单选框与复选框不同,由于它只能选中一个值,因此不适合绑定数组,如下所示。


  选择框的multiple特性能控制其是否多选,而这也会决定是否需要绑定数组,如下所示。


3)值绑定

  单选框、复选框和选择框的值原先只能是字符串或布尔值,而通过v-bind指令就能让它们绑定任意类型的值,如下所示,为两个单选框的value特性绑定了一个对象。当选中其中一个按钮时,color属性的值就会更新成绑定的对象。


  复选框包含两个特殊的特性:true-value和false-value(如下代码所示),当将其选中时,toggle属性会更新为yes属性的值,否则更新为no属性的值。


4)修饰符

  Vue为v-model指令提供了3个修饰符,如下所列,每个修饰符后面都给出了相应的示例。

  (1).lazy修饰符能将同步输入值的事件从input替换成change,以下面的文本框为例,只有当修改其值并失去焦点时,才会更新数据对象的name属性。

  (2).number修饰符能让输入值自动转换成数字,常与number类型的文本框配合使用。

  (3).trim修饰符能过滤输入值的首尾空格。




推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 突破MIUI14限制,自定义胶囊图标、大图标样式,支持任意APP
    本文介绍了如何突破MIUI14的限制,实现自定义胶囊图标和大图标样式,并支持任意APP。需要一定的动手能力和主题设计师账号权限或者会主题pojie。详细步骤包括应用包名获取、素材制作和封包获取等。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 如何压缩网站页面以减少页面加载时间
    本文介绍了影响网站打开时间的两个因素,即网页加载速度和网站页面大小。重点讲解了如何通过压缩网站页面来减少页面加载时间。具体包括图片压缩、Javascript压缩、CSS压缩和HTML压缩等方法,并推荐了相应的压缩工具。此外,还提到了一款Google Chrome插件——网页加载速度分析工具Speed Tracer。 ... [详细]
  • 关于如何快速定义自己的数据集,可以参考我的前一篇文章PyTorch中快速加载自定义数据(入门)_晨曦473的博客-CSDN博客刚开始学习P ... [详细]
  • centos6.8 下nginx1.10 安装 ... [详细]
  • LwebandStringTimeLimit:20001000MS(JavaOthers)MemoryLimit:6553665536K(JavaO ... [详细]
  • 本文整理了Java中org.apache.solr.common.SolrDocument.setField()方法的一些代码示例,展示了SolrDocum ... [详细]
author-avatar
邵世以_806
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有