博主信息
博文 5
粉丝 0
评论 0
访问量 4503
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
CSS伪类选择器、box-sizing属性、常用单位、媒体查询
wrx-锐鑫
原创
1288人浏览过

1.伪类选择器

1.1 :nth-of-type()

:nth-of-type()起到分组匹配作用,在匹配之前将元素根据类型进行分组后再匹配

1.1.1 案例一:选择ul元素的后代元素中的第三个li

  1. <style>
  2. .list li:nth-of-type(3) {
  3. border: 1px solid gold;
  4. }
  5. </style>
  6. <ul class="list">
  7. <li>item1</li>
  8. <li>item2</li>
  9. <li>
  10. item3
  11. <ul>
  12. <li>item3-1</li>
  13. <li>item3-2</li>
  14. <li>item3-3</li>
  15. </ul>
  16. </li>
  17. <li>item4</li>
  18. <li>item5</li>
  19. </ul>

运行结果:

子元素和孙子元素的第三个li都起作用。

1.1.2 案例二:选择ul元素的子元素中的第三个li

  1. <style>
  2. .list > li:nth-of-type(3) {
  3. border: 1px solid gold;
  4. }
  5. </style>
  6. <ul class="list">
  7. <li>item1</li>
  8. <li>item2</li>
  9. <li>
  10. item3
  11. <ul>
  12. <li>item3-1</li>
  13. <li>item3-2</li>
  14. <li>item3-3</li>
  15. </ul>
  16. </li>
  17. <li>item4</li>
  18. <li>item5</li>
  19. </ul>

运行结果:

只有子元素的第三个li起作用,而孙子元素的第三个li不起作用。

1.1.3 案例三:选择ul元素的所有子元素中的第三个元素

  1. <style>
  2. .list > *:nth-of-type(3) {
  3. border: 1px solid gold;
  4. }
  5. </style>
  6. <ul class="list">
  7. <li>item1</li>
  8. <li>item2</li>
  9. <li>
  10. item3
  11. <ul>
  12. <li>item3-1</li>
  13. <li>item3-2</li>
  14. <li>item3-3</li>
  15. </ul>
  16. </li>
  17. <li>item4</li>
  18. <li>item5</li>
  19. <p>pItem1</p>
  20. <p>pItem2</p>
  21. <p>pItem3</p>
  22. </ul>

运行结果:

ul的所有子元素中,第三个li和第三个p都起作用。

.list > *:nth-of-type(3)中的*可以去掉,即.list > :nth-of-type(3)

同理,.list *:nth-of-type(3)中的*也可以去掉,表示选择ul元素的所有后代元素中的第三个元素。

1.1.4 案例四:选择ul元素的除去li标签的第三个元素

  1. <style>
  2. .list > :nth-of-type(3):not(li:nth-of-type(3)) {
  3. border: 1px solid gold;
  4. }
  5. </style>
  6. <ul class="list">
  7. <li>item1</li>
  8. <li>item2</li>
  9. <li>item3</li>
  10. <li>item4</li>
  11. <li>item5</li>
  12. <p>pItem1</p>
  13. <p>pItem2</p>
  14. <p>pItem3</p>
  15. </ul>

运行结果:

只有第三个p起作用,而第三个li不起作用。

1.1.5 其他常用用法

  1. /* 第1个 */
  2. .list > :first-of-type {
  3. background-color: red;
  4. }
  5. /* 最后1个 */
  6. .list > :last-of-type {
  7. background-color: yellow;
  8. }
  9. /* 倒数第2个 */
  10. .list > li:nth-last-of-type(2) {
  11. background-color: cyan;
  12. }

1.2 :nth-of-type(an+b)

:nth-of-type(an+b)可以设置参数,其中,a代表系数,n代表计数器,从0开始自增,b代表偏移量。
例如,:nth-of-type(3)等价于:nth-of-type(0n+3)

1.2.1 案例一:匹配第三个之后的所有元素

  1. <style>
  2. .list > :nth-of-type(n + 3) {
  3. background-color: goldenrod;
  4. }
  5. </style>
  6. <ul class="list">
  7. <li>item1</li>
  8. <li>item2</li>
  9. <li>item3</li>
  10. <li>item4</li>
  11. <li>item5</li>
  12. <li>item6</li>
  13. <li>item7</li>
  14. <li>item8</li>
  15. </ul>

运行结果:

1.2.2 案例二:匹配前三个元素 :nth-of-type(-n + 3)

  1. <style>
  2. .list > :nth-of-type(-n + 3) {
  3. background-color: goldenrod;
  4. }
  5. </style>
  6. <ul class="list">
  7. <li>item1</li>
  8. <li>item2</li>
  9. <li>item3</li>
  10. <li>item4</li>
  11. <li>item5</li>
  12. <li>item6</li>
  13. <li>item7</li>
  14. <li>item8</li>
  15. </ul>

运行结果:

1.2.3 案例三:匹配后三个元素 :nth-last-of-type(-n + 3)

  1. <style>
  2. .list > :nth-last-of-type(-n + 3) {
  3. background-color: goldenrod;
  4. }
  5. </style>
  6. <ul class="list">
  7. <li>item1</li>
  8. <li>item2</li>
  9. <li>item3</li>
  10. <li>item4</li>
  11. <li>item5</li>
  12. <li>item6</li>
  13. <li>item7</li>
  14. <li>item8</li>
  15. </ul>

运行结果:

1.2.4 其他常用用法

  1. /* 匹配所有的偶数元素 */
  2. .list > :nth-of-type(2n) {
  3. background-color: yellow;
  4. }
  5. /* even: 偶数 */
  6. .list > :nth-of-type(even) {
  7. background-color: yellow;
  8. }
  9. /* 奇数 */
  10. .list > :nth-of-type(2n + 1) {
  11. background-color: cyan;
  12. }
  13. .list > :nth-of-type(odd) {
  14. background-color: cyan;
  15. }

2.box-sizing属性

box-sizing用于设置某个元素width、height的计算方式,有两种方式:

  • content-box:默认的计算方式,在宽度和高度之外绘制元素的内边距和边框。
  • border-box:通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。

2.1 content-box(默认)

  1. <style>
  2. .box {
  3. width: 200px;
  4. height: 200px;
  5. background-color: #408080;
  6. border: 5px solid gold;
  7. margin: 20px;
  8. padding: 10px;
  9. box-sizing: content-box;
  10. }
  11. </style>
  12. <div class="box"></div>

运行结果:

div.box 占据的实际宽高为200px+10px2+5px5=230px

2.2 border-box

  1. <style>
  2. .box {
  3. width: 200px;
  4. height: 200px;
  5. background-color: #408080;
  6. border: 5px solid gold;
  7. margin: 20px;
  8. padding: 10px;
  9. box-sizing: border-box;
  10. }
  11. </style>
  12. <div class="box"></div>

运行结果:

div.box 占据的实际宽高仍为200px,而实际宽高变为200px-10px2-5px5=170px

3.常用单位

css单位分为绝对单位和相对单位,

3.1 绝对单位

px,即像素,一英寸有96px,与设备相关。

严格意义上,px也不算绝对单位,因为对于低 dpi 的设备,1px 是显示器的一个设备像素(点)。对于打印机和高分辨率屏幕,1px 表示多个设备像素。

3.2 相对单位

(1)em、rem
em:和当前或父级的font-size大小绑定的,2em 表示当前字体大小的 2 倍
rem:和根元素html的字体大小绑定,常用于布局。

如果设置根元素的字号小于浏览器的最小字号,则会默认使用浏览器的最小字号。

(2)vw、vh
vw:1vw相当于视口宽度的1%
vh:1vh相当于视口高度的1%

4 媒体查询

使用 @media 查询,可以针对不同的媒体类型定义不同的样式。一般页面的宽度是根据设备尺寸确定的,而页面高度则是没有限制的,因此,常用的是min-width和max-width。。

min-width可以理解为“大于等于”,max-width可以理解为“小于等于”

媒体查询有移动优先和PC优先两种方式,移动优先是由小屏到大屏,通过min-width进行设置,PC优先是由大屏到小屏通过max-width进行设置。

使用PC优先的方式,记得为规定最大尺寸的样式设置min-width,以免超过最大尺寸时,被自动设置为默认样式。

案例演示

  1. <style>
  2. html {
  3. font-size: 10px;
  4. }
  5. .btn {
  6. background-color: #0080c0;
  7. color: white;
  8. border: none;
  9. outline: none;
  10. }
  11. .btn:hover {
  12. cursor: pointer;
  13. opacity: 0.8;
  14. transition: 0.3s;
  15. }
  16. /* 小按钮 */
  17. .btn.small {
  18. font-size: 1.2rem;
  19. padding: 0.4rem 0.8rem;
  20. }
  21. /* 中按钮 */
  22. .btn.middle {
  23. font-size: 1.6rem;
  24. padding: 0.4rem 0.8rem;
  25. }
  26. /* 大按钮 */
  27. .btn.large {
  28. font-size: 1.8rem;
  29. padding: 0.4rem 0.8rem;
  30. }
  31. /* 移动优先 */
  32. @media (min-width: 360px) {
  33. html {
  34. font-size: 12px;
  35. }
  36. }
  37. @media (min-width: 480px) {
  38. html {
  39. font-size: 14px;
  40. }
  41. }
  42. @media (min-width: 640px) {
  43. html {
  44. font-size: 16px;
  45. }
  46. }
  47. </style>
  48. <button class="btn small">小按钮</button>
  49. <button class="btn middle">中按钮</button>
  50. <button class="btn large">大按钮</button>

运行结果:

  • 页面宽度为352px < 360px,样式为默认样式
  • 页面宽度为385px在360-480px之间,样式为 @media (min-width: 360px)
  • 页面宽度为490px在480-640px之间,样式为 @media (min-width: 480px)
  • 页面宽度为664px > 640px,样式为 @media (min-width: 640px)
批改老师:PHPzPHPz

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学