博客列表 >box-sizing属性、伪类以及媒体查询

box-sizing属性、伪类以及媒体查询

王浩
王浩原创
2021年09月24日 14:36:29505浏览
  1. 作业内容:
  2. 1. box-sizing属性解决了什么问题?实例演示
  3. 2. 伪类选择器的参数 an+b的经典应用场景,实例演示
  4. 3. 媒体查询移动优先与PC优先的区别与联系,实例演示

一、关于box-sizing属性的作用以及使用场景

  1. <style>
  2. .rule {
  3. color: yellow;
  4. width: 300px;
  5. background-color: red;
  6. }
  7. .box {
  8. color: #fff;
  9. width: 100px;
  10. background-color: blue;
  11. display: table-cell;
  12. padding: 0px;
  13. }
  14. </style>
  15. <div class="rule">这是一个长300px的DIV</div>
  16. <div class="box">这是一个长100px的DIV</div>
  17. <div class="box">这是一个长100px的DIV</div>
  18. <div class="box">这是一个长100px的DIV</div>

以上代码可以看出在没有使用padding属性的时候,上面一个红底黄字的DIV宽度,与下面三个蓝底白字的DIV宽度总和相等。但,如果将.box的padding属性设置一个值,如5px;那么图片显示效果将会变成如下图示:

这样就有可能会撑破页面,破坏想要的显示效果。
而这个时候,给.box类添加一个box-sizing属性,值为border-box

  1. box-sizing: border-box;

则可以让元素大小局限在指定的宽度内。即:指定width=内容width+padding的width+border的width。显示效果如下:

这样的话,后期在调整padding属性和border等属性的时候,就不会撑破页面,也就不需要再作更多的其他调整。

二、伪类选择器

经常会有这么一种场景,系统的导航(变称菜单)是由后台登陆的角色权限判断动态生成的。这个时候就没有办法给每一条记录添加一个指定的class,就算要加,也只能把所有的数据都添加成同一个class。这个时候,我们需要指定被选中的那一条显示高亮。又或者是有的表格,数据太多。我们需要将隔行做成背景颜色不一样,来提升视觉效果。这个时候我们就需要用到伪类选择器。伪类选择器也可以精简我们的HTML代码。不需要添加太多的class类。只需要在最外层容器添加一个class就可以了。

下面我们来码代码,以更便捷的知道伪类的实际使用。

  1. <ul class="list">
  2. <li>item1</li>
  3. <li>item2</li>
  4. <li>item3</li>
  5. <li>item4</li>
  6. <li>item5</li>
  7. <li>item6</li>
  8. <li>item7</li>
  9. <li>item8</li>
  10. </ul>
  11. <style>
  12. /* 针对第三条数据,改变样式 */
  13. .list > :nth-of-type(3) {
  14. color: red;
  15. }
  16. /* 针对倒数第二条数据,改变样式 */
  17. .list > :nth-last-of-type(2) {
  18. color: blue;
  19. }
  20. /* 循环查找,这个时候我们要用到an+b的方式 */
  21. /* 从第三个元素开始,后面每次跳过一次元素 */
  22. .list > :nth-of-type(2n + 3) {
  23. background-color: #eee;
  24. }
  25. /* 循环查找,这个时候我们要用到an+b的方式 */
  26. /* 从第一个元素开始,后面每次跳过一次元素 */
  27. .list > :nth-of-type(2n + 1) {
  28. background-color: #eee;
  29. }
  30. /* 循环查找,这个时候我们要用到an+b的方式 */
  31. /* 从第0个元素开始,后面每次跳过一次元素,即偶数行 */
  32. .list > :nth-of-type(2n) {
  33. background-color: #eee;
  34. }
  35. </style>

上效果图:

三、媒体查询,涉及到移动优先和PC优先

所谓移动优先,即系统默认是从最小的元素显示开始,如果屏幕宽度变大,就逐步增大;相反,PC优先,则优先显示最大的效果,然后逐步递减,多话不说,上代码:

移动优先的案例:

  1. <style>
  2. :root {
  3. font-size: 12px;
  4. }
  5. @media (min-width: 480px) {
  6. :root {
  7. font-size: 14px;
  8. }
  9. }
  10. @media (min-width: 640px) {
  11. :root {
  12. font-size: 16px;
  13. }
  14. }
  15. @media (min-width: 960px) {
  16. :root {
  17. font-size: 18px;
  18. }
  19. }
  20. .btn {
  21. width: 10rem;
  22. height: 10rem;
  23. }
  24. </style>
  25. <button class="btn">这是个响应式按钮</button>

PC端优先的按例:

  1. <style>
  2. :root {
  3. font-size: 18px;
  4. }
  5. @media (max-width: 960px) {
  6. :root {
  7. font-size: 16px;
  8. }
  9. }
  10. @media (max-width: 640px) {
  11. :root {
  12. font-size: 14px;
  13. }
  14. }
  15. @media (max-width: 480px) {
  16. :root {
  17. font-size: 12px;
  18. }
  19. }
  20. .btn {
  21. width: 10rem;
  22. height: 10rem;
  23. }
  24. </style>
  25. <button class="btn">这是个响应式按钮</button>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议