博客列表 >选择器与宽度分离-2019.9.3

选择器与宽度分离-2019.9.3

Alfred的博客
Alfred的博客原创
2019年09月08日 00:36:57677浏览


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

实例

<style>
  /* 相邻选择器 */
  #bg-blue + * {
    background-color: yellow;
  }

  /* 兄弟选择器 */
  #bg-blue ~ * {
    background-color: pink;
  }
</style>

<div>
  <ul>
    <li class="bg-green">l1</li>
    <li>l2</li>
    <li>l3</li>
    <li class="bg-green">l4</li>
    <p>l5</p>
    <li>l6</li>
  </ul>
  <p id="bg-blue">p7</p>
  <span>span8</span>
  <h3>h9</h3>
  <p class="bg-green">p10</p>
  <span>span11</span>
  <h3>h12</h3>
</div>

运行实例 »

点击 "运行实例" 按钮查看在线实例

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

实例

<style>
  /* 伪类:子元素选择器 */
  ul :nth-child(6) {
    background-color: coral;
  }
  /* 伪类:类型选择器 */
  ul li:nth-of-type(5) {
    background-color: darkorange;
    color: white;
  }
</style>

<div>
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
    <li>7</li>
    <li>8</li>
    <li>9</li>
    <li>10</li>
  </ul>
</div>

运行实例 »

点击 "运行实例" 按钮查看在线实例

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

实例

<style>
  .box1 {
    width: 300px;
    border: 1px solid black;
    background-color: lightgreen;
    padding: 50px;
  }
  
  /* box-sizing */
  .box2 {
    width: 300px;
    box-sizing: border-box;
    padding: 50px;
    background-color: pink;
    border: 1px solid black;
  }
</style>

<div>
  <div class="box1">
    <img src="https://www.google.com/url?sa=i&source=images&cd=&ved=2ahUKEwjVoLbGir_kAhXNZt4KHW0XCdAQjRx6BAgBEAQ&url=http%3A%2F%2Fwww.runoob.com%2Fcss%2Fcss-image-gallery.html&psig=AOvVaw2oyRD8fYcZWGDhZY6wdg7-&ust=1567958358810342" alt="开车" width="200">
  </div>
    <hr>
  <div class="box2">
    <img src="https://www.google.com/url?sa=i&source=images&cd=&ved=2ahUKEwiQuYmair_kAhXU62EKHTiYCtcQjRx6BAgBEAQ&url=http%3A%2F%2F699pic.com%2Ftupian%2Ffendoutupian.html&psig=AOvVaw2oyRD8fYcZWGDhZY6wdg7-&ust=1567958358810342" alt="开心" width="200">
  </div>
</div>

运行实例 »

点击 "运行实例" 按钮查看在线实例

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

实例

<style>
  /* 1.同级塌陷 */
  .box4 {
    width: 100px;
    height: 100px;
    background-color: burlywood;
    margin-bottom: 50px;
  }
  .box5 {
    width: 100px;
    height: 100px;
    background-color: rgb(18, 154, 233);
    margin-top: 30px;
  }

  /* 2.嵌套传递 */
  .box6 {
    width: 100px;
    height: 100px;
    background-color: burlywood;
  }
  .box7 {
    width: 100px;
    height: 100px;
    background-color: rgb(18, 154, 233);
    margin-top: 30px;
  }
  
  /* 3.自动挤压 */
  .box8 {
    width: 100px;
    height: 100px;
    background-color: burlywood;
    margin-left: auto;   /* 自动挤压 */
  }

</style>

<div>
  <!-- 1.同级塌陷 -->
  <div class="box4"></div>
  <div class="box5"></div>
  <!-- 2.嵌套传递 -->
  <div class="box6">
      <div class="box7"></div>
  </div>
  <!-- 3.自动挤压 -->
  <div class="box8"></div>
  <hr>
</div>

运行实例 »

点击 "运行实例" 按钮查看在线实例

5.总结

    1)相邻选择器:同一个父元素的不同元素兄弟或相同元素兄弟,+只会影响后面对应标签的第一个(相邻的)兄弟节点的标签样式。(并不影响前面的兄弟节点);

        兄弟选择器:同一个父元素的不同元素兄弟或相同元素兄弟,~会影响后面对应标签的所有兄弟节点的标签样式。(并不影响前面的兄弟节点)

    2):nth-child和:nth-of-type都是CSS3中的伪类选择器,其功能也都是选取父元素下的直接子元素。区别就在type和child上,如:选择p标签和span元素后面的第三个元素:

        p:nth-child(3)伪类选择器的要求1:这个元素是选定的元素(例如:p),2:这个后面的数字表示所有子元素中的第3个
        span:nth-of-type(3)伪类选择器要求1:这个元素是选定的元素(例如span)2:在父级元素中所有子元素span的第3个。

        nth-child影响到了所有child子元素,而nth-of-type则影响到了相应type的子元素,

        关注点不同,如果关注点是位置,用nth-child;

        既关注位置,又关注类型,用nth-of-type;

        一般如果没有特殊需求,nth-of-type()是最好的选择。

    3)padding容易撑大盒子,一般宽度分离解决方案有:

            1.通过计算把width和height减去padding的值
            2.设置box-sizing的值为border-box

    4)margin塌陷解决方法:

                1.给父级设置边框或内边距(不建议使用);

                2.触发bfc(块级格式上下文),改变父级的渲染规则

                    方法:  改变父级的渲染规则有以下四种方法,给父级盒子添加:

                    (1)position:absolute/fixed

                    (2)display:inline-block;

                    (3)float:left/right

                    (4)overflow:hidden

                这四种方法都能触发bfc,但是使用的时候都会带来不同的麻烦,具体使用中还需根据具体情况选择没有影响的来解决margin塌陷;

        嵌套传递解决方案:1.给父元素添加padding值;2.给父元素添加边框;3.给父元素添加 overflow:hidden

        自动挤压:在做页面内容的时候,可以对margin设负值。


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议