马冲的博客

导航

css3

css3选择器

关系选择器:

<ul class="one">

     <li>

         <h2>五虎上将</h2>

           <ul>

              <li>张飞</li>

             <li>关羽</li>

             <li>赵云</li>

              <li>马超</li>

              <li>黄忠</li>

           </ul>

     </li>

</ul>

选择器1 选择器2 (E F) 包含选择器(嵌套-下多层)

.one li{border:1px solid green}

选择器1>选择器2  父子选择器(嵌套-下一层)

.one>li{border:1px solid green

    .one>li>ul>li{border:1px solid red}

选择器1+选择器2  相邻选择器(同级-下一个)

h2:hover+ul{background:red}

选择器1~选择器2  兄弟选择器(同级-下所有)

.one>li>ul>li:hover~li{font-weight:800}

属性选择器:

1.[属性名]

li[class]{color:red}

2.[属性名=属性值]

li[class='xxj']{font-weight:800}

3.[属性名$=字符]-以指定字符结束

.two li[class$='m']{background:red}

4. [属性名^=字符]-以指定字符开始

.two li[class^='s']{border:5px solid green}

5.[属性名*=字符]-包含指定字符

.two li[class*='m']{font-style:italic}

6.[属性名|=字符]- 指定字符之后带-

.two li[title|='水']{font-size:26px}

7.[属性名~=字符]- <li class="xxj cyy">西厢记</li>

.two li[class~='cyy']{font-size:26px}

 

伪对象选择器:

选择器::first-line-选中元素内第一行内容

p::first-line{color:#f90}

选择器::first-letter-选中元素内第一个字符,英文是第一个字

母,中文是第一个字.

p::first-letter{font-size:50px}

选择器::before-元素content:“”前加内容或者图片

p::before{content:'☆☆☆☆☆'}

选择器::after-元素content:“”后加内容或者图片

p::after{content:'★★★★★'}

选择器::selection-选中内容时的状态

p::selection{background:red;COLOR:blue}

 

伪类选择器:

a相关的伪类选择器

元素:link

元素:hover

元素:active

元素:visited

 

child系列的结构性伪类选择器-强调位置

child系-步骤:

1.选中指定元素

2.查找其父元素

3.查找父元素下指定位置的元素

4.验证

 选择器:First-child-父元素下第一个符合或者不符合类型的元素,若第一个元素不符合类型-则不存在-第一个类型可不符合

p:first-child{COLOR:RED}

 

选择器:Last-child-父元素下最后一个符合或者不符合类型的元素,若最后第一个元素不符合类型-则不存在-最后一个类型可不符合

p:last-child{color:green}

 

选择器:Nth-child(n)-父元素下指定位置符合或不符合类型的元素

位置格式:  

选择器:nth-child(数字)

选择器:nth-child(单词)  even/odd

选择器:nth-child(表达式)  需要配合n来使用

/*P:nth-child(2n){background:pink}*/

    /*P:nth-child(3n+1){background:green}*/

    /*p:nth-child(even){background:purple}*/

    /*p:nth-child(odd){background:pink}*/

选择器:Only-child父元素下唯一一个符合类型的元素,有且只有一个元素

p:only-child{background:red} 

 

Of-type系列-强调符合类型

1.选中指定元素

2.查找其父元素

3.查找父元素下符合类型的元素

4.验证

 

选择器:First-of-type-父元素下第一个符合类型的元素,若第一个

元素不符合类型-则查找第二个,此处的第二个即为符合类型的第一个元素-重新定义的第一个元素类型必符合

p:first-of-type{COLOR:RED}

选择器:Last-of-type父元素下最后一个符合类型的元素,若最后一个元素不符合类型-则查找上一个,此处的上一个即为符合类型的最后一个元素-重新定义的最后一个元素类型必符合

p:last-of-type{color:green}

选择器:Nth-of-type()-父元素下指定位置且符合类型的元素

选择器:nth-of-type() (数字)

选择器:nth-of-type() (单词)  even/odd

选择器:nth-of-type() (表达式)  需要配合n来使用

/*P:nth-of-type() (2n){background:pink}*/

    /*P:nth-of-type() (3n+1){background:green}*/

    /*p:nth-of-type() (even){background:purple}*/

    /*p:nth-of-type() (odd){background:pink}*/

 

选择器:Only-of-type-父元素下唯一一个符合类型的元素,有且只有一个符合指定类型的元素

p:only-of-type{color:red}

 

其他类型的选择器

选择器:empty-选中所有的元素-空格和回车不为空

p:empty {width:300px;height:100px;border:1px solid red}

   p:empty::before {content:'暂无数据'}

选择器:root-选中页面中的根元素,

html:root {border:2px solid red}

选择器:target-选中锚点连接的元素,设定其样式

锚点连接:  

<a href="#seven">seven</a>

<p id="seven">11111111111111111111111111</p>

p{height:200px;background:#CCC;margin:10px 0}

    p:target{background:pink}-设定其连接到锚点位置时的背景颜色

选择器:checked-选中指定元素器对应元素的选中状态.

input:checked{width:100PX;height:100px}

input:checked+span{color:red}-设定checked相邻的<span>性别</span>中<span>标签内的字体颜色在选中后的颜色

选择器:disabled- 选中选择器指定的元素的不可见状态

1. 为表单添加disabled属性

<input type="text" name="id" disabled value="12138" >

2.input:disabled{background:#ff0}

 

选择器:enabled-选中选择器指定的元素的可见状态(默认)

input[type='password']:enabled{background:green}

选择器:focus-获取焦点时状态.

input[name='user']:focus{background:red}

选择器:not(选择器)-选中元素之外的所有元素样式设定(属性选择器无效,推荐使用class/id)

P:not(.love){background:pink;margin:10px}

私有前缀:

IE -ms-

Opera -o-  

FF -moz-

chrome -webkit-

safari -webkit-

 

文本属性:

(目前仅webkit内核可用)

Text-stroke: 设置文本描边的 宽度 颜色

-webkit-text-stroke:2px red;

Text-stroke-width:宽度

Text-stroke-color:颜色

Text-fill-color:文本填充色

-webkit-text-fill-color:transparent

color:transparent;

 

新的颜色表示方式:

CSS2表示颜色的方式: 英文单词、rgb、HEX

RGBA-颜色透明度(Alpha)值在0-1之间小数

HSL-(色轮模式)

H 色相-范围  0-360  

S 饱和度-鲜艳程度 0%-100%

L 亮度-明亮程度  0%-100%

HSLA

HSL上添加了透明度(Alpha)值在0-1之间小数

Transparent 透明颜色(颜色值)

还可使用rgba或者hsla在A中设置为0即可.

 

文本属性:

Tab-size  设置tab键的缩进大小---一定要在内容外加上<pre>

值为整数:表示多少个空格的长度

试验性质,仅Opera  FF

Text-decoration: 文本修饰的样式

新属性: text-decoration: 颜色  风格 线的方式 (未实现)

但其派生字属性实现

Text-decoration-line:线位置(实验性质 仅FF支持

 overline 上划线  underline  下划线 line-through中横线

Text-decoration-style: 线风格(实验性质 仅FF支持

solid  实线  dashed 虚线  double 双横线 wavy波浪线 dotted 点条线

Text-decoration-color:线颜色(实验性质 仅FF支持)

text-shadow: 设置本文的阴影属性

格式1: text-shadow: 2px  2px  red

格式2: text-shadow: 2px  2px  模糊程度(px)  red;

格式3: text-shadow: 2px  2px  red , 4px  4px  blue

direction  文本流方向

ltr从左->右 -(默认值)  rtl 从右->左

Unicode-bidi:bidi-override文字的方向和direction同

Writing-mode  设置文本的书写方式

lr-tb 从左到右,从上到下  tb-rl 从上到下,从右到左

Text-overflow:文本溢出时处理方式

注意:需要配合overflowwhite-space来使用

ellipsis 超出显示省略号

 

定位属性:

clip:rect(头px  右px  尾px  左px)

自上而下(顶部->字头高度-自尾高度

自左至右(左侧->字左宽度-字右宽度

 

边框属性:

Border-radius: 设定元素的圆角属性

完整格式:

格式:border-radius :

左上角水平半径 右上角水平半径 右下角的水平半径 左下角水平半径

  / 左上角垂直半径 右上角垂直半径 右下角的垂直半径 左下角垂直半径

缩写方式:

没斜线的---同时设定宽高

1个参数 border-radius:100px;---四个点设定相同宽高

2个参数 border-radius:100px 200px;---对角

3个参数 border-radius:100px 200px 300px;---第二个对角

4个参数 border-radius:100px 200px 300px 200px;--四点分别同时定自身的相同宽高

有斜线  参数 / 参数

 

2个参数border-radius:100px/200px;---四点分别同时设定宽高

4个参数border-radius:100px 100px/200px 200px;---宽对角,高对角

6个参数border-radius:12px 12px 12px/20px 20px 20px;---第二个对角

8个参数border-radius:1234/1234---四个点分别设定自身的宽高

 

Border-top-left-radius: 设置左上角的圆角

Border-top-right-radius:设置右上角的圆角

Border-bottom-left-radius:设置左下角的圆角

Border-bottom-right-radius:设置右下角的圆角

 

圆角的原理:

1.指定角顶点向内部走设定宽度和设定高度(半径)

2.水平和垂直交于一点(圆心)

3.以设定的宽高作为半径画一个椭圆,其和边框相交的部分就是圆角部分

边框图片:----注意此边框的宽度+元素内宽=设定的盒子宽-高同宽!

没有单独设定单个边框的方法如果边框背景图片旋转,元素内部的边框各个图片也随之旋转

位置属性中的Clip切割只可设定绝对位置absolute进行切割,不管绝对位置定在页面内部任何一个地方,切割方法都一样

Border-image-source:  图片地址

border-image-source:url(border.png);

Border-image-slice:  按照多少宽度切割  元素中间内容是否填充fill

border-image-slice:27 fill;  (单位px 不要写)*/

Border-image-width: 元素边框图片的宽度

border-image-width:27px;

Border-image-outset:  设置元素边框图片向外扩展的距离

border-image-outset:0px;

Border-image-repeat: 设置边框图片的填充方式

border-image-repeat:round ;

stretch 拉伸(默认) repeat 重复 round舍去不完整的图片

一行解决

border-image:url(border.png) 27 fill/27px/27px repeat;

 

三等分(九宫格)

将边框的图片分为9等分,元素也是9分方式,每个位置一一对应

分隔方式:

以实例分析: 如果图片81像素  

slice  设置为27   表示将图片9等分 然后放到对应的边框区域

slice 设置为54   从4个角的方向分别向内眼延伸54px距离 对应到边框区域-------注意2 4 6 8 的位置为空白 不会显示图片

slice  设置为81   4个角每个角都存放完整的一个背景图片

fill 值: 正常情况下  图片9分后的5的位置无法在元素中显示,因为5的位置是元素内容的位置,如果设置为fill 即可显示

 

盒子倒影

Box-reflect: 用于设置盒子的倒影,同时适用于文字(页面主体内部写入文字)和图片(页面主题内部插入图片)等

 

格式:  box-reflect: 位置 距离 遮罩图片

位置: below 下面 above 上面 left 左边 right 右边

距离: 设置倒影和盒子之间的距离,可以不设定

遮罩图片: 可以使用图片,可以使用渐变效果的图片

/*具有渐变效果的倒影*/实验性属性

box-reflect:位置 距离 渐变图片

.gradient{-webkit-box-reflect:below 10px -webkit-linear-gradient(top,transparent 20%,#fff);}

/*文字倒影*/

P{

font-size:40px;

-webkit-box-reflect:below 0 -webkit-linear-gradient(top,transparent 20%,#fff)

}

渐变效果:

Linear-gradient:  线性渐变

格式: linear-gradient(渐变起始位置, 颜色(长度),颜色(长度),颜色 长度。。。)

 

a. linear-gradient(位置, 色,色,色。。。)

background:-webkit-linear-gradient(top,red,blue);

background:-webkit-linear-gradient(top,red,orange,yellow,green,cyan,blue,purple)

位置可以使用角度设置渐变方向 角度单位deg 范围0-360 负数也可以

  background:-webkit-linear-gradient(-45deg,orange,purple);

b.linear-gradient(位置, 色 长,色 长,色 长……)

 

渐变的颜色位置 都是从起始位置开始计算长度,不是按比例计算

background:-webkit-linear-gradient(top,red 50%,green 75%,blue 100% )

重复线性渐变:最后一个颜色的长度决定渐变的次数

background:-webkit-repeating-linear-gradient(top,red,green,red 20%);

Radial-gradient:  径向渐变

格式: radial-gradient(圆心,形状,渐变大小,形状大小,颜色 长度,颜色 长度....)

a. radial -gradient(位置(可以用像素代替位置), 色,色,色。。。)

左、右等位置

background:-webkit-radial-gradient(center center,red,green);

像素代替位置:

background:-webkit-radial-gradient(20PX 70Px,#000,#fff);

b. radial -gradient(位置, 色 长,色 长,色 长……)

 background:-webkit-radial-gradient(center center,cyan 25%,red 75%,yellow 100%);

c. radial -gradient(位置(可以用像素代替位置), 形状,色,色,色。。。)

默认的渐变方式是椭圆(如果元素是正方形,将显示圆形渐变),可以设定为圆形

background:-webkit-radial-gradient(center center,circle,red,green);

d. radial -gradient(位置(可以用像素代替位置), 形状大小,色,色,色。。。)

设定形状-大小时不能同时使用形状设置和大小设置

background:-webkit-radial-gradient(center center,60px 60px,pink,#000);

重复径向渐变:最后一个颜色的长度决定渐变的次数

background:-webkit-repeating-radial-gradient(center center,circle,red,green,red 10%);

一个立体棋子实例

.white{

width:200px;

height:200px;

border-radius:100px;

box-shadow:-5px 5px 15px #000 ;

background:-webkit-radial-gradient(140px 60px,circle,#FFF,#666);

}

盒子阴影

1.简单的盒子阴影---box-shadow: 10px 10px ;

2.有颜色的阴影---box-shadow:10px 10px #abcdef;

3.有颜色的模糊的阴影---box-shadow:10px 10px 10px #ABCDEF

4.简单的盒子内置阴影---box-shadow:10px 10px inset;

5.有颜色的垂直阴影---box-shadow:0px 0px 10px 10px red; 

6. 6的样式等于1的样式

<script>

var six=document.getElementsByClassName('six')[0];

six.onmousedown=function(){-----------------点击鼠标的事件

this.className='4';

}

six.onmouseup=function(){--------------------离开鼠标的样式

this.className='6';

}

</script>

 

鼠标样式设定

<!DOCTYPE html>

<style>

.cursor{

width:200px;

height:200px;

border:2px solid red;

cursor:help ;

}

</style>

<div class="cursor"></div


盒子模型的设置:

Box-sizing: border-box;(边框盒子)

border-box;边框宽度+padding宽度=设置的整体元素的宽度

.four{width:300px;height:300px;background:#ccc;box-sizing:border-box;border:10px solid red;padding:20px;}

Box-sizing:content-box;(内容盒子)

content-box;默认值---边框宽度、padding宽度不包含在设定整体元素的宽度内

背景属性:

Background: url(./images) no-rapeat top center,url()……

Background-origin:放置背景图片的起点位置

Background-origin:Border-box;----左上角的边框开始点放

Background-origin:Padding-box;----内补白左上角开始点放

Background-origin:Content-box;----内容左上角开始点放

Backgroun-clip: 设置背景图片的切割方式

Backgroun-clip: Border-box;----从边框开始向元素外部剪切

Backgroun-clip: Padding-box;----从内补白开始向元素外部剪切

Backgroun-clip: Content-box;----从内容开始向元素外部剪切

Backgroun-clip: Text;----使用文字剪切背景图片(实验性质+前缀+透明颜色)

a. 正常添加一张背景图片 background:url(./img/ymd.jpg);

b. 添加背景剪切的属性-webkit-Backgroun-clip: Text;

c. 设置字体为透明色color:transparent;

Background-size: 设置背景图片的大小

background-size:auto  使用原图的实际大小

background-size:cover  使用背景图无缝隙完全遮盖元素

background-size:contain 将背景图片完全缩放到元素可以装下(有可能空白)的大小

 

分列布局属性:-webkit-

Column-count: 设定指定的列数 值为整数

-webkit-column-count:3;

如果指定列数,那么列宽将根据元素的宽度 自动变化

Column-width: 设定单列的宽度  100px

-webkit-column-width:100px;

如果设定指定的列宽,列的数量根据元素的宽度自动变换

Column-gap: 设定列之间的间距  

-webkit-column-gap:3em;

单位3em 需要先设定几列

Column-rule : 设定列之间的分割线(一行解决)

-webkit-column-rule:1px dashed #ccc;

Column-rule-color: 设定列分割线的颜色

Column-rule-style :设定列分割线的风格

Column-rule-width:设定列分割线的宽度

Column-span: 设定元素是否跨列处理

.span h1{

-webkit-column-span:all;

text-align:center;

none  不跨列   all 横跨所有列

Column-break-before: 设定元素是否与前面其他列共存

-webkit-column-break-before:always;

auto  自动处理  always 另起一列书写(新列开始)

column-break-after :设定元素是否与后面其他列共存

-webkit-column-break-after:always ;

auto  自动处理  always 另起一列书写(新列开始)

媒体查询:

检测设备的属性就是媒体查询,例如设备的宽高,页面的宽高,或者宽高比例甚至颜色显示方式等.

语法格式: @media  媒体查询列表

@media screen and (device-width:800px) and (device-height:600px){

.count{

-webkit-column-count:2;

}

}

/*媒体查询  800*600*/

@media screen and (device-width:800px) and (device-height:600px){

p:nth-child(1){background:red}

}

/*媒体查询  1024*768*/

@media screen and (device-width:1024px) and (device-height:768px){

p:nth-child(2){background:orange}

}

 

<style>

p{width:500px;height:150px;background:#CCC}

/*范围性的媒体查询*/

@media screen and (max-device-width:1399px){

p:nth-child(1){

background:red

}

}

@media screen and (min-device-width:1400px){

p:nth-child(2){

background:green;

}

}

</style>

 

<!--电脑屏幕分辨率的范围值判断-->

<div>

<P>width小于1400px 显示红色</P>

<P>width大于等于1400显示绿色</P>

</div>

 

<!doctype html>

<style>

p:only-child{width:500px;height:150px;background:#CCC}

/*设定元素的指定列数  (元素大小改变时)此时宽度会发生变化*/

.count{

border:3px solid red;

-webkit-column-count:3;

}

@media screen and (max-width:512px){

p:only-child{background:red}

.count{-webkit-column-count:2;}

}

</style>

 

<div>

<P>随着页面大小的变化 显示不同的颜色</P>

</div>

 

<hr>

<div class="count">

 

 

<style>

p:only-child{width:500px;height:150px;background:#CCC}

/*设定元素的指定列数  (元素大小改变时)此时宽度会发生变化*/

.count{

border:3px solid red;

-webkit-column-count:3;

}

/*水平>垂直*/

@media screen and (orientation:landscape){

p:only-child{background:green}

}

/*水平<垂直*/

@media screen and (orientation:portrait){

p:only-child{background:red}

.count{-webkit-column-count:2}

}

</style>

 

<div>

<P>水平>垂直 显示绿色  / 水平<垂直 显示红色</P>

</div

 

posted on 2018-11-06 23:45  马冲的博客  阅读(240)  评论(0编辑  收藏  举报