前端学习-HTML+CSS(6)

一、结构伪类选择器

根据元素在HTML中的结构关系查找元素,常用于查找父级选择器中的子元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 选第一个 */
        li:first-child{
            color: red;
        }
        /* 最后一个 */
        li:last-child{
            color: green;
        }
        /* 自行规定第几个 */
        li:nth-child(4){
            color: blueviolet;
        }
        /* 倒数第几个 */
        li:nth-last-child(4){
            color:darkkhaki;
        }
    </style>
</head>
<body>
    <ul>
        <li>我是第1个li标签</li>
        <li>我是第2个li标签</li>
        <li>我是第3个li标签</li>
        <li>我是第4个li标签</li>
        <li>我是第5个li标签</li>
        <li>我是第6个li标签</li>
        <li>我是第7个li标签</li>
        <li>我是第8个li标签</li>
    </ul>
</body>
</html>

在nth-child中可以填写公式:

偶数

2n/even

奇数2n+1/2n-1/odd
前5个-n+5
第五个往后n+5

 二、伪元素

使用css模拟的标签效果,一般网页的非主题内容可以使用伪元素(网页中的装饰小图)

::before在父元素内容最前添加一个元素
::after在父元素内容最后添加一个元素
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: skyblue;
            color: red;
        }
        .father::before{
            /* content必须添加,否则伪元素不生效 */
            content:"我";
            color: brown;
            width: 50px;
            height: 50px;
            /* 默认是行内元素,宽高不生效 */
            display:inline-block;
        }
        .father::after{
            content:"你";
            color:blue;
        }
    </style>
</head>
<body>
    <div class="father">爱</div>
</body>
</html>

三、浮动

标准流:

是浏览器在渲染显示网页内容时默认采用的一套排版规则,规定了应该以何种方式排列元素

浏览器在解析行内或行内块标签时,标签书写换行会产生一个空格的距离

浮动可以解决左右网页布局的排版

图左(加了浮动)与图右(未加浮动)

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div{
            height: 100px;
            width: 100px;
            display: inline-block;
        }
        .one{
            background-color: pink;

            /* float: left; */
        }
        .two{
            background-color: skyblue;
            /* float: left; */
        }
    </style>
</head>
<body>
    <div class="one">pink</div>
    <div class="two">skyblue</div>
</body>
</html>

 3.1 浮动的特点

不占用标准流的位置(类似向上覆盖一个图层)

浮动比标准流高半个级别,可以覆盖标准流中的元素

浮动一般顶对齐,加上margin可以改变位置

浮动后的标签具备行内块特点

浮动案例1-小米布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .top{
            height: 40px;
            background-color: #333333;
        }
        .head{
            margin: 0 auto;
            background-color: #ffc0cb;
            height: 100px;
            width: 1226px;
        }
        .middle{
            width: 1226px;
            height: 460px;
            margin:0 auto;
        }
        .middleLeft{
            float: left;
            background-color: #ffa500;
            width: 234px;
            height: 460px;
        }
        .middleRight{
            float: left;
            background-color: #87ceeb;
            width: 992px;
            height: 460px;
        }
    </style>
</head>
<body>
    <div class="top"></div>
    <div class="head"></div>
    <div class="middle">
        <div class="middleLeft"></div>
        <div class="middleRight"></div>
    </div>
</body>
</html>

 

CSS书写顺序:(浏览器执行效率高)

1.浮动/display

2.盒子模型:margin/border/padding/hwbgc

3.文字样式

浮动案例2-小米模块布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .father{
            width: 640px;
            height: 50px;
            margin: 50px auto;
        }
        ul{
            list-style: none;
        }
        li{
            float: left;
            width: 80px;
            height: 50px;
            background-color: pink;
        }
        a{
            display: block;

            text-decoration: none;
            color: white;
            font-size: 16px;
            line-height: 50px;
            text-align: center;
            margin: 0 auto;
        }
        li:hover{
            background-color: #008000;
        }
    </style>
</head>
<body>
    <div class="father">
        <ul>
            <li><a href="">新闻1</a></li>
            <li><a href="">新闻2</a></li>
            <li><a href="">新闻3</a></li>
            <li><a href="">新闻4</a></li>
            <li><a href="">新闻5</a></li>
            <li><a href="">新闻6</a></li>
            <li><a href="">新闻7</a></li>
            <li><a href="">新闻8</a></li>
        </ul>
    </div>
</body>
</html>

 

 四、清除浮动

4.1 清除浮动概念

清除浮动标签给其他标签带来的影响

子元素浮动了,就无法撑开父元素,对网页布局造成影响

4.2 清除浮动方法

1 直接设置父元素高度

简单,但是有些布局不能规定父元素高度

2 给父元素最后添加一个块级元素,并设置clear:both

3 单伪元素清楚法

        .clearfix::after{
            content: '';
            display: block;
            clear: both;
            /* 为了浏览器的兼容性 */
            height: 0;
            visibility: hidden;
        }

一个解决浮动问题和外边距塌陷的万能代码,直接粘到项目里:

        .clearfix::before,
        .clearfix::after{
            content:'';
            display:table;
        }
        .clearfix::after{
            clear: both;
        }

4 给父元素设置overflow:hidden

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值