当前位置: 首页 > article >正文

CSS 相关知识

1、高度已知,三栏布局,左右宽度 200,中间自适应,如何实现?
  <body>
    <div class="box">
      <div class="box1">高度已知</div>
      <div class="box2">左右宽度 200,中间自适应</div>
      <div class="box3">三栏布局</div>
    </div>
  </body>
  <style>
    .box {
      display: flex;
      background-color: #ccc;
      height: 200px;
    }
    .box2 {
      flex: auto;
    }
    .box1,
    .box3 {
      width: 200px;
    }
  </style>
2、在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?
  <body>  
    <div class="box">
      <div class="box1"></div>
      <div class="box2"></div>
    </div>
  </body>
  <style>
    * {
      margin: 0;
    }
    .box {
      background-color: #ccc;
    }
    .box1,
    .box2 {
      height: 200px;
      width: 200px;
      margin: 20px;
    }
    .box1 {
      background-color: red;
    }
    .box2 {
      background-color: blue;
    }
  </style>

外边距合并的场景

1、相邻兄弟元素:两个相邻的兄弟元素之间的上下外边距会合并。

2、父元素与第一个/最后一个子元素:父元素的上外边距与第一个子元素的上外边距,或父元素的下外边距与最后一个子元素的下外边距会合并。

3、空块级元素:如果一个块级元素没有内容、内边距、边框,其上下外边距会合并。

外边距合并的规则

1、取较大值:合并后的外边距取两个外边距中的较大值。

2、一正一负:如果一个外边距为正,另一个为负,合并后的外边距为两者之和。

3、同为负值:如果两个外边距都为负,合并后的外边距取绝对值较大的那个。

不让相邻元素外边距合并

1、添加边框或内边距:为父元素添加边框或内边距可以阻止外边距合并。

.parent {

padding: 1px; /* 或 border: 1px solid transparent; */

}

2、使用浮动或定位:浮动元素或绝对定位元素的外边距不会合并。

.child {

float: left; /* 或 position: absolute; */

}

3、使用overflow属性:将父元素的overflow设置为auto、hidden或scroll。

.parent {

overflow: hidden;

}

4、使用display: flex或display: grid:将父元素的display设置为flex或grid。

.parent {

display: flex;

}

5、使用::before或::after伪元素:在父元素中添加伪元素。

.parent::before {

content: '';

display: table;

}

3、移动端 1px 实现方案

 在CSS中我们一般使用px作为单位,需要注意的是,CSS样式里面的px和物理像素并不是相等的。CSS中的像素只是一个抽象的单位,在不同的设备或不同的环境中,CSS中的1px所代表的物理像素是不同的。在PC端,CSS的1px一般对应着电脑屏幕的1个物理像素,但在移动端,CSS的1px等于几个物理像素。

1、使用 transform: scale() 缩放
把原先元素的 border去掉,利用伪元素实现 border ,并将 transform 的 scale
缩小一半,原先的元素相对定位,新的 border 绝对定位。
优点:兼容性好,适用于单边或多边边框。
缺点:需要额外使用伪元素,代码稍复杂。

<body>
    <div class="border-1px">1</div>
    <div class="border-2px">2</div>
    <div class="border-3px">3</div>
    <div class="border-4px">4</div>
    <div class="scale-1px">5</div>
  </body>
  <style>
    .border-1px {
      position: relative;
    }
    .border-1px::after {
      content: "";
      position: absolute;
      left: 0;
      bottom: 0;
      width: 100%;
      height: 1px;
      background-color: #000;
      transform: scaleY(0.5); /* 缩放为原来的一半 */
      transform-origin: 0 0;
    }
    .border-2px {
      padding-top: 10px;
      border-bottom: 0.5px solid #000;
    }
    .border-3px {
      padding-top: 10px;
      border-bottom: 1px solid #000;
    }
    .border-4px {
      margin-top: 10px;
      height: 1px;
      background-color: #000;
      transform: scaleY(0.5); /* 会将盒子整体都缩放 */
    }
    .scale-1px {
      position: relative;
      margin-bottom: 20px;
      border: none;
    }
    .scale-1px:after {
      content: "";
      position: absolute;
      top: 0;
      left: 0;
      border: 1px solid #000; 
      -webkit-box-sizing: border-box;
      box-sizing: border-box;
      width: 200%;
      height: 200%;
      -webkit-transform: scale(0.5);
      transform: scale(0.5);
      -webkit-transform-origin: left top;
      transform-origin: left top;
    }
  </style>


http://www.kler.cn/a/538560.html

相关文章:

  • 2.9寒假作业
  • 单例模式几种实现
  • 【通俗易懂说模型】反向传播(附多元回归与Softmax函数)
  • string 与 wstring 的字符编码
  • Linux ltrace跟踪入门
  • 【含文档+PPT+源码】基于Python校园跑腿管理系统设计与实现
  • 【STM32】AHT20温湿度模块
  • Ubuntu 多版本 gcc 配置常用命令备忘
  • 【Rust自学】20.4. 结语:Rust学习一阶段完成+附录
  • 调用 useState 之后发生了啥(⊙_⊙)?
  • windows蓝牙驱动开发-蓝牙无线电重置和恢复
  • cpp之模板
  • 安装和使用 Ollama(实验环境windows)
  • 2月7日QT
  • c/c++蓝桥杯经典编程题100道(16)链表反转
  • 面试经典150题——字典树
  • Deepseek本地部署指南:在linux服务器部署,在mac远程web-ui访问
  • 基于开源AI智能名片2+1链动模式S2B2C商城小程序的个人IP活动运营策略与影响力提升研究
  • LangChain + DeepSeek-R1:构建高效的语言模型服务
  • Qt+海康虚拟相机的调试
  • 调用Jenkins接口api的几个例子
  • 【R语言】数据重塑
  • 什么是ZooKeeper?
  • 前端开发中遇到的小问题以及解决方案记录3
  • 使用GD32F470的硬件SPI读写W25Q64
  • mysql 库建表数量有限制吗?