伪类:操做 文档树中已存在元素
伪元素:建立 文档树外的一个新元素css
1. 伪类
例子1:html
<ul> <li class="first-item">我是第一个</li> <li>我是第二个</li> </ul>
li.first-item { color: orange }
以上代码对第一个<li>
标签添加了一个类(改变文字颜色为橘色)。其等价于下方经过伪类操做实现。vue
<ul> <li>我是第一个</li> <li>我是第二个</li> </ul>
li:first-child { color: orange }
例子2:segmentfault
<ul> <li class="first-item">我是第一个</li> <li>我是第二个</li> </ul>
li.first-item { color: orange }
小结:从以上例子能够看出伪类主要针对已经存在的元素设置样式。其能够经过:first-child
等定位指定元素进行样式设置。还能够经过:hover
等设置指定元素特定状态下的样式。浏览器
2. 伪元素app
例子1:dom
<p> <span class="first">H</span> ello World, and wish you have a good day! </p>
.first { font-size: 5em; }
以上代码对 <p>
标签中的第一个字母进行样式设置(修改文字大小)。其一样能够经过如下的伪元素方式操做实现(看起来像是建立了一个虚拟<span>
元素并添加样式来对首字母进行样式修改,然而实际上文档树中并不存在这个<span>
元素)。布局
<p> Hello World, and wish you have a good day! </p>
p:first-letter { font-size: 5em; }
小结:从以上例子能够看出伪元素产生的效果就好像是经过在文档树中添加了一个新的元素来实现的,其也所以得名。post
先上一个例子:this
<\>wonyun!</p> <style> p:before{content: "hello "} p:after{content: "you are handsome!"} </style>
以上实现效果能够等价于如下HTML结构:
<p> <span>hello </span> wonyun! <span> you are handsome!</span> </p>
1.用法
默认添加的内容为 inline
元素content
属性(必须)设置 伪元素内的内容。其内容十分灵活(具体能够参考本章参考文章2):
2.主要特色
此处引用参考文章2中的内容。
3.优缺点
此处引用参考文章2中的内容。
优势
缺点
4.实际应用场景
counter()
结合实现序号问题,而不用使用列表元素参考文章 传送门:
在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种状况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这个现象叫浮动溢出。为了防止浮动溢出现象的出现而进行的CSS处理,就叫CSS清除浮动。
仍是先来一个例子:
<div class="news"> <img src="news-pic.jpg" /> <p>some text</p> </div>
.news { background-color: gray; border: solid 1px black; } .news img { float: left; } .news p { float: right; }
详情能够查看章节参考文章1中的内容。
1)使用带clear
属性的空元素
优势:简单,代码少,浏览器兼容性好。
缺点:须要添加大量无语义的html元素,代码不够优雅,后期不容易维护。
2)使用CSS的overflow
属性
3)使用邻接元素处理
什么都不作,仅仅给浮动元素后面的元素添加clear属性。
3)使用 CSS的:after
伪元素+触发hasLayout 处理
对方式1的改进,消除大量无语义的空元素。
注意: 经过给浮动元素容器设置 zoom:1
属性触发haslayout,是为了兼容IE6和IE7浏览器。
两类清除浮动方式:
拓展问题:
参考文章 传送门:
text-align: center;
line-height: 值为span的高度;
overflow
:
针对容器内全部的数据溢出的一种统一处理方式,无论容器内的存储的是文本、图片仍是其余的数据统一取值。
text-overflow
:
是专门针对盒子内的文本溢出时的处理方式;
搭配使用:
text-overflow: string/ellipsis overflow:hidden()
为使得text-overflow
属性有效,overflow
属性必须设置且值为hidden
由于tring 或ellipsis取值是创建在隐藏溢出部分的基础上的,替代符号都是在容器内显示的,不会在容器外显示,因此overflow也必须这样设置。
此处引用参考文章中内容:
normal | nowrap | pre | pre-wrap | pre-line
normal | break-all | keep-all
word-break
的补充,它有两个值:normal | break-word
参考文章 传送门:
例子:
<div id="app"> <input type="text" value="HelloWorld" alt="captcha" ref="text"> <button @click="changeText">change word</button> </div>
var app = new Vue({ el: '#app', data: { }, //添加一个方法 methods:{ //改变文字 changeText () { this.$refs.text.value \= 'Hello Vue!' } } });
通俗的将就相似于原生js document.getElementById("#id")
可是:只是相似,他们的不一样点是Vue是操控虚拟DOM ,也就是说在渲染初期并无这个ref的属性,这个属性是在建立Vue实例之后才被加到虚拟DOM中的。因此在官方文档的最后提醒开发者不能将ref的结果在模版中进行数据绑定。
this.$refs
:
通俗的将就是搜集全部的ref
的一个对象。经过this.$refs
能够访问到此Vue实例中的全部设置了ref
属性的DOM元素,并对其进行操做。
**参考文章 传送门:** * [vue的ref属性的相关介绍](https://blog.csdn.net/Little_Pig_Bug/article/details/81324366?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight)