zoukankan      html  css  js  c++  java
  • 使用before和after属性选择器

    最近仿造了小米官网写了一遍,可以说是完全把官网给写完了。

    官网中有一个log切换的动态效果,有点把我卡住了找方法找了许久,然后用一个简单的方法实现了:

    先了解一下before和after两个属性选择器:

    before:在元素之前插入内容;

    after:在元素之后插入内容;

    两个属性可以添加图片类型,可以添加文字,可以添加div块,所以在网页的应用范围很广。

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>css3小米log切换</title>
        <style>
            .log{ 
                /* 
                    设置外部盒子高55宽55文本居中。背景颜色为橙色,溢出隐藏,居中
                */
                text-align: center;
                cursor: pointer;
                overflow: hidden;
                width: 55px;
                height: 55px;
                background-color:rgb(255,103,0);
                margin:40px auto; 
            }
            /* 
                在div前插入一个宽为49 高49 top 3 left -49 将home.png移出log盒子,
                设置过度时间0.2s,背景图片为home.png
            */
            .log::before{
                width: 49px;
                height: 49px;
                content: "";
                position: relative;
                top: 3px;
                left:-49px;
                background: url('img/mi-home.png') center;
                display: inline-block;
                transition:all .2s ease 0s;
            }
            /* 
                在div前插入一个宽为49 高49 top -49 left 0 将log.png移出log盒子,
                设置过度时间0.2s,背景图片为log.png
            */
            .log::after{
                width: 49px;
                height: 49px;
                content: "";
                position: relative;
                top: -49px;
                left: 0;
                background: url('img/mi-logo.png') center;
                display: inline-block;
                transition:all .2s ease 0s;
            }
            /* 
               悬浮对两张图片进行偏移,达到切换效果
            */
            .log:hover::before{
                left: 0;
                
            }
            .log:hover::after{
                left: 50px;
            }
        </style>
    </head>
    <body>
        <div class="log"></div>
    </body>
    </html>

    在使用这两个属性时:content  是必不可少的。

    除此之外:在写这个的过程中我对选择器有了更深一层的理解:

    代码如下:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            /* 
               设置div1的样式
            */
            .div1 {
                width: 400px;
                height: 200px;
                background-color: lawngreen;
            }
            /* 
               设置div2的样式
            */
            .div2 {
                width: 400px;
                height: 200px;
                background-color: lightcoral;
            }
            /* 
              设置div3的样式
            */
            .div3{
                width: 400px;
                height: 200px;
                background-color: olivedrab;
            }
            /* 
               设置div1的子div样式并隐藏
            */
            .div1>div{
                width: 200px;
                height: 100px;
                background-color: rgb(18, 53, 150);
                display: none;
            }
            /* 
              设置div2的子div样式并隐藏
            */
            .div2>div {
                width: 200px;
                height: 100px;
                background-color: rgb(165, 24, 24);
                display: none;
            }
            /* 第一个悬浮父元素修改其子元素div样式使子div显现 */
            .div1:hover>div{    
                display: inline-block;
            }
            /* 悬浮第一个div1修改其兄弟元素div2的背景颜色*/
            .div1:hover + .div2{    
                background-color: mediumvioletred;
            }
            /* 悬浮第一个div1修改其同级的div3的boder */
            .div1:hover ~ .div3{    
                border: 10px solid rgb(138, 46, 46);
            }
            /* 
               将css选择器一层层嵌套使用就可以实现简单的动画效果,也可以添加过度效果就会更加生动,
               css3的属性可以实现部分js功能,但不建议这样使用,复杂的动画效果使用js将会更加方便快捷
            */
        </style>
    </head>
    
    <body>
        <div class="div1">
            我是第一个div1
            <div>
                我是第一个div1的子div
            </div>
        </div>
        <div class="div2">
            我是第二个div2
            <div>
                我是第二个div2的子div
            </div>
        </div>
    
        <div class="div3">
            我是第三个div3
              <div>
                我是第三个div3的子div
              </div>
        </div>
    </body>
    </html>

    使用的图片 

    敲完此次案例对于代码的理解和熟练程度更加的清晰

    个人学习,内容简略

    https://www.w3school.com.cn/cssref/css_selectors.asp

  • 相关阅读:
    17.1.2.1 Advantages and Disadvantages of Statement-Based and Row-Based Replication
    17.1.2 Replication Formats
    Setting the Master Configuration on the Slave
    17.1.1.9 Introducing Additional Slaves to an Existing Replication Environment
    17.1.1.8 Setting Up Replication with Existing Data
    17.1.1.7 Setting Up Replication with New Master and Slaves
    17.1.1.6 Creating a Data Snapshot Using Raw Data Files
    列出display的值,并说明它们的作用
    CSS设置DIV居中
    CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?
  • 原文地址:https://www.cnblogs.com/2979100039-qq-con/p/13295330.html
Copyright © 2011-2022 走看看