首页 > 其他分享 >深入理解css 笔记(4)

深入理解css 笔记(4)

时间:2022-10-13 21:14:58浏览次数:66  
标签:em 容器 元素 高度 笔记 深入 link 外边 css

处理元素高度的方式跟处理宽度不一样。之前对 border-box 的修改依然适用于高度。而且很有用,但是通常最好避免给元素指定明确的高度。当明确设置一个元素的高度时,内容可能会溢出容器。当内容再限定区域放不下,渲染到父元素外面时。用 overflow 属性可以控制溢出内容的行为,该属性支持以下 4 个值。visible(默认值)所有内容可见,即使溢出容器边缘。hidden 溢出容器内边距的内容被裁剪,无法看见,scroll 容器出现滚动条,用户可以通过滚动查看剩余内容。auto 只有内容溢出时容器才会出现滚动条。

  所以倾向于用 auto,而不是 scroll,因为大多数情况下,不希望滚动条一直出现。用百分比指定高度存在问题。百分比参考的时元素容器快的大小,但是容器的高度通常是由子元素的高度决定的。这样会造成死循环,浏览器处理不来,因此,他会忽略这个声明。要想让百分比高度生效,必须给父元素明确定义一个高度。想使用百分比高度让一个容器填满屏幕,最好的方式是用视口的相对单位 vh。

  等高列的问题从 css 出现就一直困扰着人们。最早大家是用表格来实现。后面为了解决这个问题,诞生了很多创意的解决方案。使用伪元素,负外边距等方案。比如我们上面的页面,想要它们高度一致。最好的方法是让它们自己决定高度,然后扩展较矮的列,让它的高度等于较高的列。可以用 css 表格和 flexbox 两种方式实现。不过还是 flexbox 吧

<style>
  .container {
    display: flex;
  }

  .main {
    background-color: #fff;
    border-radius: 0.5em;
    width: 70%;
  }

  .sidebar {
    padding: 1.5em;
    background-color: #fff;
    border-radius: 0.5em;
    width: calc(30% - 1.5em);
    margin-left: 1.5em;
  }
</style>

  给容器设置 display:flex,它就变成了一个弹性容器,子元素默认等高。你可以给子元素设置宽度和外边距,加起来可能超过 100%,flexbox 也能妥善处理。设置高度一定会导致更复杂的情况,请尽量不要明确设置元素的高度。

  min-height 和 max-height。可以用这两个属性指定最小或最大值,而不是明确定义高度,这样元素就可以在这些界限内自动决定高度。如果你想要将一张大图放在一大段文字后面,但是担心它溢出容器,就可以用 min-eight 指定一个最小高度,而不指定它的明确高度。max-height 允许元素自然的增高到一个特定界限。如果到达这个界限,元素就不再增高,内容会溢出。

  vertical-align 声明只会影响行内元素或者 table-cell 元素。对于行内元素,它控制着该元素跟同一行内其他元素之间的对齐挂你。比如,可以用它控制一个行内的图片跟相邻的文字对齐。

  不同于内边距和边框宽度,外边距可以设置为负值。负外边距有一些特殊用途,比如让元素重叠或者拉伸到比容器还宽。负外边距的具体行为取决于设置在元素的哪边,

  负外边距的具体行为取决于设置在元素的哪边,如果设置左边和顶部的负外边距,元素就会相应的向左或向上移动,导致元素与它前面的元素重叠,如果设置右边或者底部的负外边距,并不会移动元素,而是将它后面的元素拉过来。给元素底部加上负边距并不等同于给它下面的元素顶部加上负外边距。

  上面的页面中,头部和容器 明明没有添加任何外边距,为什么他们之间会有间距呢?当顶部和/或底部的外边距相邻时,就会重叠,产生单个外边距。这种现象被称作折叠。外边距折叠的主要原因与包含文字的块之间的间隔相关。段落 p 默认有 1em 的上外边距和 1em 的下外边距。但是当前后叠放两个段落时,它们的外边距不会相加产生一个 2em 的间距,而会折叠,只产生 1em 的间隔。折叠外边距的大小等于相邻外边距中的最大值。标题的下方有 19.92px 的外边距,段落顶部有 16px 的外边距。较大者 19.92px 也就是最终渲染的两个元素之间。

  下面这些方法可以防止外边距折叠。使用 flexbox 布局。浮动元素,内连块。绝对定义,固定定位。或者给两个外边距加上边框或者内边距,防止它们折叠。

<style>
  .button-link {
    display: block;
    padding: 0.5em;
    color: #fff;
    background-color: #0090c9;
    text-align: center;
    text-decoration: none;
    text-transform: uppercase;
  }
  .button-link + .button-link {
    margin-top: 1.5em;
  }
</style>

<aside class="sidebar">
  <a href="/twitter" class="button-link"> follow us on Twitter </a>
  <a href="/facebook" class="button-link"> like us on Facebook </a>
</aside>

  接下来给链接加上间距。现在它们上下堆叠在一起。分别或同时指定它们的上下外边距,两个按钮之间会发生外边距重叠。 margin-top: 1em;margin-bottom: 1em;只是我们只需要按钮之间有间距。可以使用相邻的兄弟组合器选中同一个父元素下紧跟在其他 button-link 后面的 button-link 元素。现在只在两个之间存在外边距。

<style>
  .sponsor-link {
    display: block;
    color: #0072b0;
    font-weight: bold;
    text-decoration: none;
  }
</style>

<aside class="sidebar">
  <a href="/twitter" class="button-link"> follow us on Twitter </a>
  <a href="/facebook" class="button-link"> like us on Facebook </a>
  <a href="/sponsors" class="sponsor-link">become a sponsor</a>
</aside>

  上述方法让一切如预期,但是如果在侧边栏添加更多内容,则会再次出现间距问题。虽然给链接加上顶部外边距也可以实现效果,但是考虑到 html 会频繁改动,也许下个月,总有一天这个侧边栏有些内容需要移动或者替换。每一次改变 html,都需要考虑这些外边距的问题。你得确保每个元素之间有间距,但是容易顶部/底部没有多余的间距。

  更通用的解决方案:猫头鹰选择器。该选择器开头是一个通用选择器,它可以选中所有元素,后面是一个相邻兄弟组合器(+),最后是另一个通用轩再起。*+*因为它形似一只眼神空洞的猫头鹰而得名。

<style>
  .sidebar * + * {
    margin-top: 1.5em; // 猫头鹰选择器
  }
</style>

标签:em,容器,元素,高度,笔记,深入,link,外边,css
From: https://www.cnblogs.com/wlxll/p/16789672.html

相关文章

  • SpringBoot深入理解
    当使用打包时,会下载org-springframework-boot-loader的jar,并且不会放在lib存放的第三方jar包文件中,该jar包中有个JarLauncher.class文件中设置了jar包运行时的入口和打包后......
  • Spring实战笔记二(bean的作用域、运行时注入、)
    一、bean的作用域      默认情况下,Spring应用上下文中所有bean都是以单例(singleton)的形式创建的。      Spring定义的多种作用域,可以基于这些作用域创建be......
  • 【杂谈】如何让2020年秋招CV项目能力更加硬核,可深入学习有三秋季划4大领域32个方向
    为了让大家在深度学习与计算机视觉方向上掌握更多硬核的项目能力,以便应对秋季招聘,有三AI秋季划准备了4个小组,每一个小组有8个方向,供大家深入学习。当你在某一个领域里做到极......
  • 【大四上学期】过程控制系统课程笔记【更新中】
    过程控制系统笔记目录过程控制系统笔记第一章单回路反馈控制系统单回路系统结构组成举例--水槽液位控制系统单回路控制系统方框图单回路反馈控制系统特点被控变量选择选......
  • YOLOX 笔记
    笔记来源:https://www.bilibili.com/video/BV1jo4y1D7CF/?vd_source=2ed6e8af02f9ba8cb90b90e99bd4ccee近年来,目标检测的工程应用研究中,YOLO系列以快速响应、高精度、结......
  • 《CUDA C 编程指南》学习笔记
    CUDA是什么?  CUDA(ComputeUnifiedDeviceArchitecture),是显卡厂商NVIDIA推出的运算平台。是一种通用并行计算架构,该架构使GPU能够解决复杂的计算问题。说白了就是我......
  • 开工大吉 | 一图读懂《自动化工控工程师笔记本电脑使用现状》
    1关注到在《知乎》上每隔一段时间都会出现一个关于“自动化及相关专业笔记本电脑选择的问题”。为此我们调动圈内资源,发起了一次《自动化工控工程师笔记本电脑使用现状》的......
  • 我为什么喜欢原子化CSS
    用Unocss已经有几个月了,从使用者的角度来说说我为什么喜欢上了原子化css。类似“原子化css”的概念其实很早之前就有,比如Bootstrap的css工具类已经很接近现在的原子化css......
  • css面试点总结2
    css面试点-@import与link的详解css面试点-position属性css面试点-CSS预处理器(Sass/Less/Postcss)css面试点-css3的filter详解......
  • css面试点总结一
    css面试点-css盒子模型css面试点-flex布局,css3弹性盒子模型css面试点-BFC(块级格式化上下文)与常见布局方案css面试点-css层叠上下文css面试点-div居中方法(共8种)css面试点-清......