美文网首页
day03-css3选择器

day03-css3选择器

作者: 东邪_黄药师 | 来源:发表于2019-04-15 08:50 被阅读0次

    01属性选择器:

    属性选择器:属性是相对于标签而言。所谓属性选择器就是根据指定名称的属性的值来查找元素
    1.E[attr]:查找指定的拥有attr属性的E标签。如查找拥有style属性的li标签

            li[style]{
                text-decoration: underline;
            }
    

    2.E[attr=value]:查找拥有指定的Attr属性并且属性值为value的E标签。如想查找拥有class属性并且值为Red的li标签 =是严格匹配

            li[class=red]{
                /*font-size: 30px;*/
            }
    

    3.E[attr*=value]:查找拥有指定的attr属性并且属性值中包含(可以在任意位置)value的E标签

            li[class*=red]{
                /*font-size: 30px;*/
            }
    

    4.E[attr^=value]:查找拥有指定的attr属性并且属性值以value开头的E标签\

            li[class^=blue]{
                font-size: 30px;
            }
    

    5.E[attr$=value]:查找拥有指定的attr属性并且属性值以value开结束的E标签

            li[class$=blue]{
                /*font-size: 30px;*/
            }
    

    02兄弟选择器:

    兄弟伪类:
    +:获取当前元素的相邻的满足条件的元素
    ~:获取当前元素的满足条件的兄弟元素
    下面这句样式说明查找 :添加了.first样式的标签的相邻的li元素:
    1.相邻
    2.必须是指定类型的元素

        .first + li{
            color: blue;
        }
    
    下面样式查找添加了.first样式的元素的所有兄弟li元素:
    
        1.必须是指定类型的元素
        .first ~ li{
            color: pink;
        }
    

    0.3伪类选择器:

    相对于父元素的结构伪类:
    E:first-child:查找E元素的父级元素中的第一个E元素。在查找的时候并不会限制查找的元素的类型
    下面这句样式查找:li的父元素中的第一个li元素:
    1.相对于当前指定元素的父元素
    2.查找的类型必须是指定的类型

            li:first-child{
                color: red;
            }
    

    E:last-child:查找E元素的父元素中最后一个指定类型的子元素

            li:last-child{
                background-color: skyblue;
            }
    

    查找的时候限制类型 first-of-type
    1.也是相对于父元素
    2.在查找的时候只会查找满足类型条件的元素,过渡掉其它类型的元素

            li:first-of-type{
                color: red;
            }
            li:last-of-type{
                color: orange;
            }
    

    指定索引位置 nth-child(从1开始的索引||关键字||表达式)

            li:nth-child(5){
                background-color: lightblue;
            }
    

    偶数个元素添加背景 even:偶数 odd:奇数

            /*li:nth-child(even){
                background-color: orange;
            }
            li:nth-child(odd){
                background-color: pink;
            }*/
            li:nth-of-type(even){
                background-color: orange;
            }
            li:nth-of-type(odd){
                background-color: pink;
            }
    

    想为前面的5个元素添加样式
    /n:默认取值范围为0~子元素的长度.但是当n<=0时,选取无效
    0>>5
    1>>4
    ...
    4>>1
    5>>0
    /

            li:nth-last-of-type(-n+5){
                font-size: 30px;
            }
            li:nth-of-type(-n+5){
                font-size: 30px;
            }
    

    空值:没有任何的内容,连空格都没有:

            li:empty{
                background-color: red;
            }
    

    HTML5 选择器-伪类target:

    :target:可以为锚点目标元素添加样式,当目标元素被触发为当前锚链接的目标时,调用此伪类样式。
    demo:

        h2:target{
                color: red;
            }
    
    <body>
        <ul class="nav">
            <li><a href="#title1">CSS (层叠样式表)</a></li>
            <li><a href="#title2">实例</a></li>
            <li><a href="#title3">发展历史</a></li>
            <li><a href="#title4">使用方法</a></li>
            <li><a href="#title5">布局特点</a></li>
            <li><a href="#title6">创建编辑</a></li>
        </ul>
        <div class="content">
            <h2 id="title1">xxxxxxx</h2>
                    <p>xxxxxxxxxxxxx</p>
    <h2 id="title1">xxxxxxx</h2>
                    <p>xxxxxxxxxxxxx</p>
    <h2 id="title1">xxxxxxx</h2>
                    <p>xxxxxxxxxxxxx</p><h2 id="title1">xxxxxxx</h2>
                    <p>xxxxxxxxxxxxx</p>
    <h2 id="title1">xxxxxxx</h2>
                    <p>xxxxxxxxxxxxx</p>
            
        </div>
    </body>
    

    伪元素-before-after:

    a) 重点:E::before、E::after

    i. 是一个行内元素,需要转换成块:display:block float:** position:

    ii. 必须添加content,哪怕不设置内容,也需要content:””

    iii. E:after、E:before 在旧版本里是伪类,在新版本里是伪元素,新版本下E:after、E:before会被自动识别为E::after、E::before,按伪元素来对待,这样做的目的是用来做兼容处理

    iv. E::before: 定义在一个元素的内容之前插入content属性定义的内容与样式

    v. E::after: 定义在一个元素的内容之后插入content属性定义的内容与样式

    vi. 注意:

    1. <u>IE6、IE7与IE8(怪异模式Quirks mode)不支持此伪元素</u>

    2. <u>CSS2中 E:before或者E:after,是属于伪类的,并且没有伪元素的概念,CSS3中 提出伪元素的概念 E::before和E::after,并且归属到了伪元素当中,伪类里就不再存在E:before或者 E:after伪类</u>

    b) E::first-letter文本的第一个字母或字(不是词组)

    c) E::first-line 文本第一行

    d) E::selection 可改变选中文本的样式
    demo:

       div:nth-of-type(1){
                width: 300px;
                height: 200px;
                background-color: red;
                float: left;
            }
            div:nth-of-type(2){
                width: 100px;
                height: 200px;
                background-color: blue;
                float: left;
                position: relative;
            }
    
            div:nth-of-type(2)::before{
                /*必须添加content属性,否则后期不可见*/
                content: "";
                /*默认是行级元素,如果想设置宽高,就必须转换为块级元素*/
                position: absolute;
                width: 20px;
                height: 20px;
                background-color: #fff;
                border-radius: 10px;
                left: -10px;
                top: -10px;
            }
            div:nth-of-type(2)::after{
                /*必须添加content属性,否则后期不可见*/
                content: "";
                /*默认是行级元素,如果想设置宽高,就必须转换为块级元素*/
                position: absolute;
                width: 20px;
                height: 20px;
                background-color: #fff;
                border-radius: 10px;
                left: -10px;
                bottom: -10px;
            }
        </style>
    

    html5其他的伪类选择器:

    <style>
            /*获取第一个字符:实现首字下沉*/
            p::first-letter{
                color: red;
                font-size: 30px;
                float: left;/*文本环绕*/
            }
    
            /*获取第一行内容:如果设置了::first-letter,那么无法同时设置它的样式*/
            p::first-line{
                text-decoration: underline;
            }
    
            /*设置当前选中内容的样式*/
            p::selection{
                background-color: #000;
                color: red;
                /*它只能设置显示的样式,而不能设置内容大小*/
                /*font-size: 30px;*/
            }
        </style>
    </head>
    <body>
    <p>眉毛上的汗水和眉毛下的泪水,你必须选择一样<br>你不努力,活该生活在社会的最底层</p>
    

    颜色使用示例:

    01 .16进制:

     background-color: #c9ffa6;
    

    2.rgb(红,绿,蓝)

    background-color: rgb(255,150,0);
    

    03.hsl
    hsl(颜色(0360),饱和度(0%100%),明度(0%~100%))
    明度默认是50%,一般建议保留50的值

    background-color: hsl(300,100%,50%);
    
    h5中的颜色设置
                rgba(红色,绿色,蓝色,透明度)
                透明度:0代表完全透明  1代表完成不透明  不会影响子元素
                background-color: rgba(255,0,255,0.2);
    
                background-color: hsla(300,100%,50%,0.2);
    

    .关于透明度的补充说明:
    a)opacity只能针对整个盒子设置透明度,子盒子及内容会继承父盒子的透明度
    b)transparent 不可调节透明度,始终完全透明
    c)使用rgba 来控制颜色,相对opacity ,不具有继承性


    文本(shadow阴影):

    text-shadow还没有出现时,大家在网页设计中阴影一般都是用photoshop做成图片,现在有了css3可以直接使用text-shadow属性来指定阴影。这个属性可以有两个作用,产生阴影和模糊主体。这样在不使用图片时能给文字增加质感

    1. 语法:

    text-shadow : none | <length> none | [<shadow>, ] * <shadow> 或none | <color> [, <color> ]*

    也就是:

    text-shadow:[颜色(Color) x轴(X Offset) y轴(Y Offset) 模糊半径(Blur)],[颜色(color) x轴(X Offset) y轴(Y Offset) 模糊半径(Blur)]...

    或者

    text-shadow:[x轴(X Offset) y轴(Y Offset) 模糊半径(Blur) 颜色(Color)],[x轴(X Offset) y轴(Y Offset) 模糊半径(Blur) 颜色(Color)]...
    2.取值:
    a)<length>:长度值,可以是负值。用来指定阴影的延伸距离。其中X Offset是水平偏移值,Y Offset是垂直偏移值
    b)<shadow>:阴影的模糊值,不可以是负值,用来指定模糊效果的作用距离
    c)<color>:指定阴影颜色,也可以是rgba透明色。

    image.png

    3.说明:
    可以给一个对象应用一组或多组阴影效果,方式如前面的语法显示一样,用逗号隔开。text-shadow: X-Offset Y-Offset Blur Color中X-Offset表示阴影的水平偏移距离,其值为正值时阴影向右偏移,如果其值为负值时,阴影向左偏移;Y-Offset是指阴影的垂直偏移距离,如果其值是正值时,阴影向下偏移反之其值是负值时阴影向顶部偏移;Blur是指阴影的模糊程度,其值不能是负值,如果值越大,阴影越模糊,反之阴影越清晰,如果不需要阴影模糊可以将Blur值设置为0;Color是指阴影的颜色,其可以使用rgba色
    4.一些效果案例代码:

    .demo{
        width: 600px;
        padding: 30px;
        background-color: #666;
        margin:20px auto;
        text-align: center;
        font:bold 80px/100% "微软雅黑";
        color: #fff;
    }
    /*侧阴影效果*/
    .demo1{
        text-shadow: 2px 2px 2px #ff0000;
    }
    /*辉光效果*/
    .demo2{
        text-shadow: 0 0 30px red;
    }
    /*多层辉光效果*/
    .demo3{
        text-shadow:0 0 5px #fff,0 0 15px #fff,0 0 40px #fff ,0 0 70px red ;
    }
    /*苹果经典效果*/
    .demo4{
        color: black;
        text-shadow: 0 1px 1px #fff;
    }
    /*浮雕效果*/
    .demo5{
        color: #ccc;
        text-shadow: -1px -1px 0px #fff,-2px -2px 0px #eee,1px 1px 0px #444,2px 2px 0px #333;
    }
    /*模糊字效果*/
    .demo6{
        color: transparent; /*将本身设置为透明*/
        text-shadow: 0 0 6px #ff9966;
    

    盒模型:

    1.在默认情况下,CSS设置的盒子宽度仅仅是内容区的宽度,而非盒子的宽度。同样,高度类似。真正盒子的宽度(在页面呈现出来的宽度)和高度,需要加上一些其它的属性。例如:
    a)padding + border + width = 盒子的宽度
    b)padding + border + height = 盒子的高度
    很明显,这不直观,很容易出错,造成网页中其它元素的错位。

    1. CSS3中可以通过box-sizing 来指定盒模型,即可指定为content-box、border-box,这样我们计算盒子大小的方式就发生了改变
      a)content-box:对象的实际宽度等于设置的width值和border、padding之和
      b)border-box: 对象的实际宽度就等于设置的width值,即使定义有border和padding也不会改变对象的实际宽度
      3.浏览器的兼容性:
      IE8及以上版本支持该属性,Firefox 需要加上浏览器厂商前缀-moz-,对于低版本的IOS和Android浏览器也需要加上-webkit-

    边框圆角:

    border-radius可以通过值来定义样式相同的角,也对每个角分别定义
    1.值的说明:
    border-radius:px: 将创建四个大小一样的圆角
    border-radius:
    px *px *px px: 四个值分别表示左上角、右上角、右下角、左下角
    border-radius:
    px px:第一个值表示左上角、右下角;第二个值表示右上角、左下角
    border-radius:
    px *px *px:第一个值表示左上角;第二个值表示右上角、左下角;第三个值表示右下角
    2.单个圆角的设置:除了同时设置四个圆角以外,还可以单独对每个角进行设置。对应四个角,CSS3提供四个单独的属性:

    • border-top-left-radius
    • border-top-right-radius
    • border-bottom-right-radius
    • border-bottom-left-radius
      这四个属性都可以同时设置1到2个值。如果设置1个值,表示水平半径与垂直半径相等。如果设置2个值,第一个值表示水平半径,第二个值表示垂直半径
      3.补充:创建两个值的非对称圆角还有一种书写方式:如border-radius:20px/10px;表示在水平方向上20px,在垂直方向上10px;具体说明如下:可分别设置长、短半径,以“/”进行分隔,遵循“1,2,3,4”规则,“/”前面的1~4个用来设置横轴半径(分别对应横轴1、2、3、4位置 ),“/”后面1~4个参数用来设置纵轴半径(分别对应纵轴1、2、3、4位置 )

    demo:

     /*添加边框圆角*/
                /*1.设置一个值:四个角的圆角值都一样*/
                /*border-radius: 10px;*/
                /*2.设置两个值:第一个值控制左上/右下,第二个值控制右上/左下*/
                /*border-radius: 10px 30px;*/
                /*3.设置三个值:第一个值控制左上,第二值控制右上/左下,第三个值控制右下*/
                /*border-radius: 10px 40px 60px;*/
                /*4.设置四个值:左上  右上 右下 左下*/
                /*border-radius: 10px 30px 60px 100px;*/
    
                /*添加/是用来设置当前个不同方向的半径值  水平x方向/垂直y方向*/
                border-radius: 100px/50px;
    
                /*添加某个角点的圆角*/
                /*border-radius: 0px 50px 0px 0px;*/
                /*border-上下-左右-radius:*/
                /*border-top-right-radius: 100px;
                border-top-left-radius: 100px;*/
                /*border-bottom-left-radius: 100px;
                border-bottom-right-radius: 100px;*/
    
                /*设置某个角点的两个方向上的不同圆角*/
                /*border-top-right-radius: 100px 50px;
                border-bottom-left-radius: 80px 40px;
                border-bottom-right-radius: 60px 30px;
                border-top-left-radius: 40px 20px;*/
                /*如果想设置四个角点的不同方向上的不同圆角值*/
                /*分别是水平方向的:左上,右上,右下,左下 / 垂直方向的:左上,右上,右下,左下*/
                /* border-radius: 100px 0px 0px 0px/20px 0px 0px 0px; */
            }
    

    案例:android机器人

     <style>
            *{
                padding: 0;
                margin: 0;
            }
            body{
                background-color: #ccc;
            }
            .content{
                width: 500px;
                height: 500px;
                border: 1px solid red;
                margin:50px auto;
            }
            .an_header{
                width: 250px;
                height: 125px;
                background-color: darkgreen;
                margin: 10px auto;
                /*添加圆角*/
                border-radius: 125px 125px 0 0;
                position: relative;
            }
            /*使用伪元素添加眼睛*/
            .an_header::before,
            .an_header::after{
                /*1.一定设置content属性*/
                content: "";
                /*2.如果需要设置宽度就应该转换其为块级元素,它默认是行级元素  float  display  position*/
                position: absolute;
                bottom: 40px;
                width: 20px;
                height: 20px;
                border-radius: 10px;
                background-color: #fff;
            }
            .an_header::before{
                left: 70px;
            }
            .an_header::after{
                right: 70px;
            }
            .an_body{
                width: 250px;
                height: 250px;
                background-color: darkgreen;
                border-radius: 0px 0px 20px 20px;
                margin:0 auto;
                position: relative;
            }
            .an_body::before,
            .an_body::after{
                content: "";
                position: absolute;
                top: 20px;
                background-color: darkgreen;
                width: 30px;
                height: 180px;
                border-radius: 10px;
            }
            .an_body::before{
                left:-40px;
            }
            .an_body::after{
                right:-40px;
            }
    
            .an_footer{
                width: 250px;
                height: 100px;
                position: relative;
                margin:0 auto;
            }
            .an_footer::before,
            .an_footer::after{
                content: "";
                position: absolute;
                top: 00px;
                background-color: darkgreen;
                width: 30px;
                height: 90px;
                border-radius: 0px 0px 10px 10px;
            }
            .an_footer::before{
                left: 50px;
            }
            .an_footer::after{
                right: 50px;
            }
        </style>
    </head>
    <body>
    <div class="content">
        <div class="an_header"></div>
        <div class="an_body"></div>
        <div class="an_footer"></div>
    </div>
    </body>
    
    image.png

    边框阴影:

    文本阴影:text-shadow:offsetX offsetY blur color
    边框阴影:box-shadow:h v blur spread color inset
    h:水平方向的偏移值
    v:垂直方向的偏移值
    blur:模糊--可选,默认0
    spread:阴影的尺寸,扩展和收缩阴影的大小--可选 默认0
    color:颜色--可选,默认黑色
    inset:内阴影--可选,默认是外阴影

    值 描述
    h-shadow 必需。水平阴影的位置。允许负值。
    v-shadow 必需。垂直阴影的位置。允许负值。
    blur 可选。模糊距离。
    spread 可选。阴影的尺寸。值越大,阴影的扩散面积越大
    color 可选。阴影的颜色。
    inset 可选。将外部阴影 (outset) 改为内部阴影。
    demo:

    *为item添加边框阴影*/
    div[class=item]:nth-child(-n+4){
        box-shadow: 1px 1px 3px 0px #bbb;
    }
    /*可以同时添加多个边框阴影*/
    div[class=item]:last-child{
        box-shadow: 1px 1px 2px #ff0000 inset,-1px -1px 2px #ff0000 inset;
    }
    

    边框图片

    1.功能:将图片规定为包围 div 元素的边框
    a)定义和用法: border-image 属性是一个简写属性,用于设置以下属性
    border-image-source
    border-image-slice
    border-image-width
    border-image-outset
    border-image-repeat
    b)属性说明:
    值 描述
    border-image-source 用在边框的图片的路径。
    border-image-slice 图片边框向内偏移—裁切。
    border-image-width 图片边框的宽度。
    border-image-outset 边框图像区域超出边框的量。
    border-image-repeat 图像边框是否应平铺(repeated)、铺满(rounded)或拉伸(stretched)。
    2.案例:任意拉伸的按钮:通过一个按钮的背景图片制作出任意大小的按钮,实现背景填充效果:
    1.效果:


    .downLoad{
        width:80px;
        height: 30px;
        display: block;
        text-align: center;
        line-height: 30px;
        border: 1px solid #ccc;
        /*设置图片边框背景*/
        border-image: url("../images/btn_bg.png");
        /*设置裁切区域,同时设置填充模式*/
        border-image-slice: 10 fill;
        /*设置边框的大小,这个一般与裁切区域大小一致,否则就发生缩放*/
        border-image-width: 10px;
        /*设置边框的重复模式*/
        border-image-repeat: round;
    

    相关文章

      网友评论

          本文标题:day03-css3选择器

          本文链接:https://www.haomeiwen.com/subject/srkewqtx.html