通配符选择器
//格式: *{ //属性:值; } //选择全部标签,用*号表示;
//示例: * { font-size:20px; } //元素 <div id='boot'> 兄弟抱一下 </div> <h1>风吹雨打</h1> <p通用选择器</p>
伪类选择器
:active a:active 选择活动链接。 ::after p::after 在每个 <p> 的内容之后插入内容。 ::before p::before 在每个 <p> 的内容之前插入内容。 :checked input:checked 选择每个被选中的 <input> 元素。 :default input:default 选择默认的 <input> 元素。 :disabled input:disabled 选择每个被禁用的 <input> 元素。 :empty p:empty 选择没有子元素的每个 <p> 元素(包括文本节点)。 :enabled input:enabled 选择每个启用的 <input> 元素。 ::first-letter p::first-letter 选择每个 <p> 元素的首字母。 ::first-line p::first-line 选择每个 <p> 元素的首行。 :focus input:focus 选择获得焦点的 input 元素。 :fullscreen :fullscreen 选择处于全屏模式的元素。 :hover a:hover 选择鼠标指针位于其上的链接。 :in-range input:in-range 选择其值在指定范围内的 input 元素。 :indeterminate input:indeterminate 选择处于不确定状态的 input 元素。 :invalid input:invalid 选择具有无效值的所有 input 元素。 :lang(language) p:lang(it) 选择 lang 属性等于 "it"(意大利)的每个 <p> 元素。 :link a:link 选择所有未访问过的链接。 :not(selector) :not(p) 选择非 <p> 元素的每个元素。 :optional input:optional 选择不带 "required" 属性的 input 元素。 :out-of-range input:out-of-range 选择值超出指定范围的 input 元素。 ::placeholder input::placeholder 选择已规定 "placeholder" 属性的 input 元素。 :read-only input:read-only 选择已规定 "readonly" 属性的 input 元素。 :read-write input:read-write 选择未规定 "readonly" 属性的 input 元素。 :required input:required 选择已规定 "required" 属性的 input 元素。 :root :root 选择文档的根元素。 ::selection ::selection 选择用户已选取的元素部分。 :target #news:target 选择当前活动的 #news 元素。 :valid input:valid 选择带有有效值的所有 input 元素。 :visited a:visited 选择所有已访问的链接。
CSS三大特性
层叠性
给父元素设置属性,所有后代元素也可以使用,这就叫做继承性。
//并不是所有的属性都可以继承,只有以 1.color开头 2.line开头 3.font-开头 4.text-开头 才会进行继承 继承的属性会在开发者工具上显示,选中当前元素,上面有 linhetied form div 就是说当前属性继承来自于div 高亮的就是继承的,灰色的或者被划掉的就是未被继承的属性 //特殊元素 a标签的字体颜色和下划线不会被继承属性所影响 h标签的字体大小不会被继承属性所影响
继承性
多个选择器给元素设置相同的属性,如果选择器权重相同则后面的属性会把前面的属性覆盖掉,默认选择优先级高选择器的样式;
p{ color:red; } #pp{ color:blue; //这个生效因为他的层级高 } <p id='pp'>继承性</p>
优先级
当多个选择器选中一个元素并给其赋值上相同的属性,如何层叠就由优先级确定;
优先级排序从大到小:id选择器>类选择器>元素选择器>通配符选择器>继承属性>浏览器默认属性(最小的)
1.继承的话是谁离当前选中的标签近谁的优先级就高; 例子: li{ color:blue; //当前的li离p比较近,所以就优先继承li的,所以li的权重就高 } ul{ color:red; } <ul> <li> <p> 优先级</p> </li> </ul> 2. 优先级的选择器赋值相同的属性,只会选择最后的属性;
优先级最高: !important
用于提升选择器中的某个属性,将指定属性的优先级提至最高,请注意:important只能直接选中,不能间接选中(指的是继承)
通配符选择器也是可以直接选中的
p{ color:red !important; } <p>优先级最高</p>
权重计算(请忘掉权重,记住优先级)
因为20个元素选择器都顶不过1个类选择器,原因是因为20个元素选择器的权重是0,0,0,20,但是类选择器的权重是0,0,1,0)
只有选择器是直接选中元素的才需要进行计算权重,当权重都是一样时,会选择最后书写的选择器;
选择器 | 权重 |
继承以及浏览器默认 | 0,0,0,0 |
通配符选择器和子选择器以及兄弟选择器等 | 0,0,0,0 |
元素选择器和伪元素选择器 | 0,0,0,1 |
类选择器和伪类选择器以及属性选择器 | 0,0,1,0 |
id选择器 | 0,1,0,0 |
内联样式 | 1,0,0,0 |
!important | 最高 |
权重计算公式:
权重 = 选择器 * 个数;权重可以累加,但是权重不作为最后样式生效的最后依据
权重计算只算权重不为0的选择器,例如id选择器,类选择器,元素选择器20个元素选择器,都超不过一个类选择器
CSS盒子模型
盒子模型是指:外边距+边框+内边距+内容高度或宽度
内容宽度和高度是指:内容高度或宽度
元素高度或高度是指:边框+内边距+内容高度或宽度
元素空间的高度或宽度是指:外边距+边框+内边距+内容高度或宽度
CSS过渡(transition)
给元素加某种效果可以从一种样式转变到另一个的时候,无需使用Flash动画或JavaScript。
transition-property:当前需要过渡的属性(多个属性以,号隔开); transition-duration:过渡动画需要执行的秒数(多个属性执行动画时长以,号隔开); transition-delay:延迟几秒后开始执行动画; transition-timing-function:控制过渡动画的速度; div{ width:300px; height:20px; background:red; transition-property:width,background; //从300到800需要2秒完成 transition-duration:2s,2s; //延迟俩秒后开始执行动画 transition-delay:3s; } div:hover{ //过渡完成的属性在hover里面写 width:800px; background:green; }
简写
transition:执行过渡的CSS属性 执行动画的秒数 动画运动速度(可以省略) 延迟几秒开始执行(可以省略);(多个属性书写用逗号隔开)
transition:width 2s linear 1s,background 2s ; //如果过渡属性很多(过渡时间和速度以及延时时间都一样的情况下)可以采用all的 //方式,当前元素的所有过渡属性都执行过渡,且都是5秒执行时间 transition:all 5s;
过渡注意点
三要素
1.1必须要有属性发生变化
1.2 必须告诉系统哪个属性需要执行过渡效果
1.3 必须告诉系统过渡效果持续时长
过渡书写思路1.1不要管过渡先编写基本样式
1.2修改我们认为需要修改的属性
1.3在给修改的属性添加过渡即可
CSS2D转换(transform)
能够对元素进行旋转,移动,拉伸,拉长或缩放;
2d转换会修改元素的坐标系
旋转(rotate)
//代表多少度,10deg代表10度 transform:rotate(10deg);
移动(translate)
//第一个值代表x轴,第二个值代表y轴 transform:translate(100px,0);
放大或缩放(scale)
取值如果是1则不变,代表一倍,可以小于1则缩小或大于1则放大,如果俩个参数一样可以简略成一个
//第一个值代表x轴放大或缩小,第二个值代表y轴放大或缩小 transform:scale(1.5,1.5); //1.5是倍数
简写
//多个属性用空格隔开 transform:scale(1.5) translate(100px,0);
形变中心点(transform-origin)
默认元素旋转是按照自己的中心点进行旋转的,可以通过形变中心点进行修改旋转的中心点;
取值有三种: 1. px 2.百分比 3.关键字 left top //第一个值是X轴的位置,第二个值是Y值的位置 transform-origin:100px 20px;
旋转轴向
默认元素旋转轴向是Z轴,旋转轴向有三个方向X轴Y轴Z轴;
//在rotate后面加上自己想旋转的轴向就行了,默认是Z轴 //写了之后必须加上透视属性才能明显起来(透视属性只能加给旋转元素的上级, //默认父级元素) transform:rotateX(10deg); transform:rotateY(10deg);
透视(perspective)
调整Z轴的视角,值越小越近(效果越明显),值越大越远(效果不明显);
perspective: 距离值;