19.CSS-定位(上)

31 篇文章 2 订阅

定位

定位流的分类

1.相对定位

什么是相对定位?

相对定位就是相对于自己以前在标准流中的位置来移动

注意点
  1. 相对定位是不脱离标准流的,会继续在标准流中占据一份空间;
  2. 需要配合其他的属性一起使用,相对于自己以前在标准流中的位置来移动;
position: relative;
top: 20px;
right: ;
bottom: ;
left: 20px;
  1. 在相对定位中同一个方向上的定位属性只能使用一个;
  2. 由于相对定位是不脱离标准流的,所以在相对定位中是区分块级元素/行内元素/行内块级元素的;
  3. 由于相对定位是不脱离标准流的,并且相对定位的元素会占用标准流中的位置,所以当给相对定位的元素设置margin/padding等属性的时候,会影响到标准流的布局
应用场景
  1. 用于对元素进行微调;
    例如:当input和img的顶部对不齐时
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>75-定位流</title>
  <style>
    *{
      margin: 0;
      padding: 0;
    }
    input{
      width: 200px;
      height: 50px;
    }
    img{
      width: 100px;
      height: 50px;
      position: relative;
      top: 20px;
    }
  </style>
</head>
<body>
<input type="text">
<img src="images/vcode.jpg">
</body>
</html>
  1. 配合绝对定位来使用。

2.绝对定位

什么是绝对定位?

就是相对于body来定位(不一定是相对于body)
规律:

  1. 默认情况下所有的绝对定位的元素,无论有没有祖先元素,都会以body作为参考点。
  2. 如果一个绝对定位的元素有祖先元素,并且祖先元素,那么这个绝对定位的元素就会以定位流的那个祖先元素作为参考点。
    (只要是这个绝对定位元素的祖先元素都可以;定位流指的是绝对定位、相对定位、固定定位,只有静态定位不行)
  3. 如果一个绝对定位的元素有祖先元素,并且祖先元素也是定位流,而且祖先元素中有多个元素都是定位流,那么这个绝对定位的元素会以离他最近的那个元素为参考点(就近原则)
注意点
  1. 绝对定位的元素是脱离标准流的;
  2. 绝对定位的元素是不区分块级元素/行内元素/行内块级元素的。
  3. 如果一个绝对定位的元素是以body作为参考点,那么其实是以网页首屏的宽度和高度作为参考点,而不是以整个网页的高度和宽度作为参考点的;
  4. 一个绝对定位的元素会忽略祖先元素的padding。
应用场景

在企业开发中,不会单独使用相对定位或者绝对定位。
单独使用相对定位的弊端:
相对定位不会脱离标准流,会继续在标准流当中占用一份空间,所以不利于布局界面。
单独使用绝对定位的弊端:
默认情况下绝对定位的元素会以body作为参考点,所以会随着浏览器的宽度高度的变化而变化。
绝对定位和相对定位结合使用:子绝父相
子元素用绝对定位,父元素用相对定位
例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>79-绝对定位-子绝父相</title>
  <style>
    *{
      padding: 0;
      margin: 0;
    }
    ul{
      list-style: none;
      width: 800px;
      height: 50px;
      margin: 0 auto;
      margin-top: 100px;
    }
    ul li{
      float: left;
      width: 100px;
      height: 50px;
      line-height: 50px;
      text-align: center;
      background-color: #cccccc;
    }
    ul li:nth-of-type(4){
      background-color: yellow;
      position: relative;
    }
    ul li img{
      /*单独使用相对定位的弊端:
        相对定位不会脱离标准流,会继续在标准流当中占用一份空间,所以不利于布局界面。*/
      /*position: relative;
      left: -42px;
      top: -18px;*/
      /*单独使用绝对定位的弊端:
      默认情况下绝对定位的元素会以body作为参考点,所以会随着浏览器的宽度高度的变化而变化*/
      /*position: absolute;
      left: 526px;
      top: 90px;*/
      /*绝对定位和相对定位结合使用:子绝父相
      子元素用绝对定位,父元素用相对定位*/
      position: absolute;
      left: 40px;
      top: -10px;
    }
  </style>
</head>
<body>
<ul>
  <li>服装城</li>
  <li>美妆馆</li>
  <li>京东超市</li>
  <li>全球购
    <img src="images/hot.png">
  </li>
  <li>闪购</li>
  <li>团购</li>
  <li>拍卖</li>
  <li>金融</li>
</ul>
</body>
</html>

如何让绝对定位的元素水平居中
只需要设置绝对定位的元素的left:50%;
然后在设置绝对定位元素的margin-left:—元素宽度的一半px;
例如:

ul li img{
      /*单独使用相对定位的弊端:
        相对定位不会脱离标准流,会继续在标准流当中占用一份空间,所以不利于布局界面。*/
      /*position: relative;
      left: -42px;
      top: -18px;*/
      /*单独使用绝对定位的弊端:
      默认情况下绝对定位的元素会以body作为参考点,所以会随着浏览器的宽度高度的变化而变化*/
      /*position: absolute;
      left: 526px;
      top: 90px;*/
      /*绝对定位和相对定位结合使用:子绝父相
      子元素用绝对定位,父元素用相对定位*/
      position: absolute;
      /*left: 40px;*/
      left: 50%;
      margin-left: -12px;
      top: -10px;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PostCSS 插件有很多,以下是 PostCSS 官方网站上列出的所有插件及其作用: 1. PostCSS-import:使用 @import 导入外部 CSS 文件。 2. PostCSS-mixins:类似于 Sass 的 Mixin。 3. PostCSS-nested:允许使用嵌套规则。 4. PostCSS-simple-vars:使用自定义变量,类似于 Sass 的变量。 5. PostCSS-math:进行数学计算。 6. PostCSS-color-function:使用颜色函数。 7. PostCSS-calc:使用 calc 函数。 8. PostCSS-extend:使用类似于 Sass 的 @extend。 9. PostCSS-for:使用类似于 Sass 的 @for。 10. PostCSS-each:使用类似于 Sass 的 @each。 11. PostCSS-conditionals:使用类似于 Sass 的 @if 和 @else。 12. PostCSS-nth-child-fix:支持伪类选择器 :nth-child。 13. PostCSS-modules:将 CSS 类名转换成哈希值,避免类名冲突。 14. PostCSS-pxtorem:将像素值转换成 rem 值,使得页面更好地适配不同大小的设备。 15. PostCSS-zindex:自动计算 z-index 值。 16. PostCSS-font-magician:自动引入相应的字体文件。 17. PostCSS-will-change:为元素添加 will-change 属性。 18. PostCSS-apply:使用类似于 CSS 变量的 @apply。 19. PostCSS-csso:代码压缩优化。 20. PostCSS-discard-comments:去除注释。 21. PostCSS-discard-duplicates:去除重复的样式。 22. PostCSS-discard-empty:去除空的样式。 23. PostCSS-discard-overridden:去除被覆盖的样式。 24. PostCSS-merge-longhand:合并长手写属性。 25. PostCSS-merge-rules:合并相同的规则。 26. PostCSS-minify-font-values:压缩字体值。 27. PostCSS-minify-gradients:压缩渐变值。 28. PostCSS-minify-params:压缩参数值。 29. PostCSS-minify-selectors:压缩选择器。 30. PostCSS-normalize-charset:添加 @charset 规则。 31. PostCSS-normalize-display-values:标准化 display 属性值。 32. PostCSS-normalize-positions:标准化定位属性值。 33. PostCSS-normalize-repeat-style:标准化背景重复和背景平铺属性值。 34. PostCSS-normalize-string:标准化字符串。 35. PostCSS-normalize-timing-functions:标准化缓动函数。 36. PostCSS-normalize-unicode:标准化 Unicode 字符。 37. PostCSS-normalize-url:标准化 URL。 38. PostCSS-normalize-whitespace:标准化空白。 39. PostCSS-ordered-values:按字母顺序排列属性值。 40. PostCSS-reduce-idents:缩短标识符,如类名、id 等。 41. PostCSS-reduce-initial:缩短初始值。 42. PostCSS-reduce-transforms:合并 transform 属性。 43. PostCSS-unique-selectors:去除重复的选择器。 44. PostCSS-pseudo-class-any-link:添加 :any-link 伪类。 45. PostCSS-pseudo-class-first:添加 :first-match 和 :nth-match 伪类。 46. PostCSS-pseudo-class-focus-within:添加 :focus-within 伪类。 47. PostCSS-pseudo-class-last:添加 :last-match 伪类。 48. PostCSS-pseudo-class-matches:添加 :matches 伪类。 49. PostCSS-pseudo-class-not:添加 :not 伪类。 50. PostCSS-pseudo-class-placeholder:添加 ::placeholder 伪类。 51. PostCSS-pseudo-element-any-link:添加 ::any-link 伪元素。 52. PostCSS-pseudo-element-content-insert:添加 ::before 和 ::after 伪元素。 53. PostCSS-pseudo-element-custom-properties:添加 ::part 和 ::theme 伪元素。 54. PostCSS-pseudo-element-dir:添加 ::dir 伪元素。 55. PostCSS-pseudo-element-file-selector-button:添加 ::file-selector-button 伪元素。 56. PostCSS-pseudo-element-fullscreen:添加 ::fullscreen 伪元素。 57. PostCSS-pseudo-element-placeholder-shown:添加 ::placeholder-shown 伪元素。 58. PostCSS-pseudo-element-range-thumb:添加 ::range-thumb 伪元素。 59. PostCSS-pseudo-element-scrollbar:添加 ::scrollbar 伪元素。 60. PostCSS-pseudo-element-scrollbar-button:添加 ::scrollbar-button 伪元素。 61. PostCSS-pseudo-element-scrollbar-track:添加 ::scrollbar-track 伪元素。 62. PostCSS-pseudo-element-scrollbar-track-piece:添加 ::scrollbar-track-piece 伪元素。 63. PostCSS-pseudo-element-slotted:添加 ::slotted 伪元素。 当然,还有很多其他的 PostCSS 插件,可以根据自己的需要来选择和使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值