博主信息
博文 9
粉丝 0
评论 0
访问量 7124
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
CSS选择器的使用和对padding、margin的理解 19年9月03日
捩花的博客
原创
674人浏览过

1.实例演示相邻选择器与兄弟选择器,并分析异同

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>相邻选择器和兄弟选择器比较</title>
    <link rel="stylesheet" href="style6.css">
    <style>
        ul {
            margin: 0;
            padding-left: 0;
            border: 1px dashed red;
        }
        
        ul li {
            list-style-type: none;
            width: 40px;
            height: 40px;
            background: wheat;
            text-align: center;
            line-height: 40px;
            border-radius: 50%;
            display: inline-block;
            box-shadow: 2px 2px 1px #888;
        }
        /* ID选择器 */
        /* 相邻选择器 */
        
        #bg-blue+* {
            background-color: yellow;
        }
        /* 相邻兄弟选择器 */
        
        #bg-white~* {
            background-color: red;
        }
    </style>
</head>

<body>
    <ul>
        <li>1</li>
        <li id="bg-blue">2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li id="bg-white">6</li>
        <li>7</li>
        <li>8</li>
        <li>9</li>
        <li>10</li>
    </ul>
</body>

</html>

运行实例 »

2. 实例演示:nth-child() 和 :nth-of-type()选择器,并分析异同

实例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>nth-child和nth-of-type选择器</title>
    <style>
        /* 关注点是位置但类型不确定时,用nth_child;  */
        
        div :nth-child(2) {
            background-color: green;
        }
        /* 既关注或确定了位置,又关注或确定了类型 用nth-of-type */
        /* 简写 */
        /* p:nth-of-type(2) {
            background-color: yellow;
        } */
        /* 完整写法 */
        
        div p:nth-of-type(2) {
            background-color: yellow;
        }
    </style>
</head>

<body>
    <H1>第一个DIV</H1>
    <div>
        <p>第一个P</p>
        <li>第一个LI</li>
        <p>第二个P</p>
    </div>
    <H1>第二个DIV</H1>
    <div>
        <p>第一个P</p>
        <li>第一个LI</li>

    </div>
</body>

</html>

运行实例 »

3. 实例演示:padding 对盒子大小的影响与解决方案, 使用宽度分离或box-sizing


实例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>padding宽度分离或box-sizing</title>
    <style>
        /* 宽高分离 */
        
        .wrap {
            width: 300px;
        }
        
        .box2 {
            padding: 50px;
            background-color: lightblue;
            border: 1px solid black;
        }
        /* box-sizing */
        
        .box3 {
            box-sizing: border-box;
            padding: 50px;
            background: pink;
            width: 300px;
            border: 1px solid black;
        }
    </style>
</head>

<body>

    <h2>宽度分离</h2>
    <!-- 宽度分离 -->
    <div class="wrap">
        <div class="box2">
            <img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1567498199338&di=4aba9523b3344cc4df46ca2b968e5a79&imgtype=0&src=http%3A%2F%2Fimg4.cache.netease.com%2Fphoto%2F0001%2F2010-04-17%2F64EFS71V05RQ0001.jpg" alt="赵老师" width="200px">
        </div>
    </div>
    <h2>box-sizing</h2>
    <!-- box-sizing -->
    <div class="box3">
        <img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1567498199338&di=4aba9523b3344cc4df46ca2b968e5a79&imgtype=0&src=http%3A%2F%2Fimg4.cache.netease.com%2Fphoto%2F0001%2F2010-04-17%2F64EFS71V05RQ0001.jpg" alt="赵老师" width="200px">
    </div>

</body>

</html>

运行实例 »

4. 实例演示: margin中的同级塌陷, 嵌套传递与自动挤压, 并提出解决方案或应用场景

同级塌陷演示

实例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">

    <title>maring同级塌陷</title>
    <style>
        .box1 {
            width: 100px;
            height: 100px;
            background-color: lightblue;
        }
        
        .box2 {
            width: 100px;
            height: 100px;
            background-color: lightcoral;
        }
        
        .box1 {
            margin-bottom: 50px;
        }
        
        .box2 {
            margin-top: 30px;
        }
    </style>
</head>

<body>
    <!-- 1.同级塌陷 垂直方向谁大以谁为准,小的塌陷于大的  -->
    <!-- BOX1设置了50PX的外边距-下,BOX2设置了30PX的外边距上,BOX2的外边距上包括在了BOX1的外边距下,这就是同级塌陷 -->

    <div class="box1"></div>
    <div class="box2"></div>

</body>

</html>

运行实例 »

嵌套传递演示及解决办法

实例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">

    <title>maring嵌套传递</title>
    <style>
        .box3 {
            width: 200px;
            height: 200px;
            background-color: lightblue;
        }
        
        .box4 {
            width: 100px;
            height: 100px;
            background-color: lightcoral;
        }
        
        .box4 {
            margin-top: 50px;
        }
        /* 父元素增加padding属性可解决 */
        /* .box3 {
            padding-top: 50px;
            height: 150px;
        } */
    </style>
</head>

<body>
    <!-- 2.嵌套传递 子元素的外边距传递到父元素-->
    <!-- BOx4设置的外边距上传递到了BOX3 -->
    <div class="box3">
        <div class="box4"></div>
    </div>
    <h2>解决办法,通过给父元素增加padding属性,参考注释代码.BOX3</h2>

</body>

</html>

运行实例 »

自动挤压

实例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>margin自动挤压</title>
    <style>
        .box5 {
            width: 150px;
            height: 150px;
            background-color: lightblue;
        }
        
        .box5 {
            margin: auto;
        }
    </style>
</head>

<body>

    <!-- 3.自动挤压 -->
    <!-- 设置margin:auto;或者margin-left/right:auto后,块级元素在水平方向的自我撑满,导致的居中,或者靠最左或者最右-->
    <!-- 块级元素的高度默认是内容高度,与父级元素的高度并没有直接的关系,所以设置了margin-top/bottom:auto,则被重置为0 -->



    <div class="box5">

    </div>



</body>

</html>

运行实例 »

补充点同学提出的解决办法

1.同级坍塌及解决办法

 只发生在block元素上(不包括float、absolute、inline-block元素)

只发生在垂直方向上(不考虑writing-mode)

所谓的同级坍塌就是指两个div都设置外边距的时候,数值小的会被大的吞噬,而margin外边距也只会显示数值大的那一方。例如div1的margin-bottom下边距是30px,而div2的上边距margin-top是20px的时候,最终浏览器只会以最大的30px为准。解决办法,要么只设置一边,要么设置的第二个的时候,将上一个的边距+想要设置的值。、

2.嵌套传递

解决办法:1.给父元素增加padding属性

                2.给父元素添加border属性,

                3.给父元素或子元素添加浮动属性

3

批改状态:合格

老师批语:你可以试着举一些也我不同的案例来学习
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学