Css知识点小记

124 阅读2分钟

1.关于背景图片以及路径裁剪

.header {
    height: 95vh;
    background-image: linear-gradient(to right bottom, rgba(126, 213, 111, 0.8), rgba(40, 180, 133, 0.8)), url("../img/hero.jpg");
    background-size: cover;
    background-position: top;
    clip-path: polygon(0 0, 100% 0, 100% 75vh, 0 100%);

}

2.通过css完成text的英文大小写切换

text-transform: uppercase;

3.修改文字之间的间隔间距

letter-spacing: 35px;

4.animation

animation: moveInLeft;
animation-duration: 2s;
/*animation-timing-function: ease-in; 动画运行方式 */
/*animation-delay: 3s;*/
/*animation-iteration-count: 3;  动画可以发生的次数 */
@keyframes moveInLeft {
    0% {
        opacity: 0;
        transform: translateX(-100px);
    }
    80% {
        transform: translateX(10px);
    }
    100% {
        opacity: 1;
        transform: translateX(0);

    }
}

5.解决动画结束后会有一个小小向上移动的效果(只知道用这个可以消除影响)

backface-visibility: hidden;

6.动画设置

animation-fill-mode: backwards;

7.flex-direction:colunm 使用惨剧

<script setup lang="ts"> 
import {ref} from "vue";
const isExpend=ref(false)
const clickButtonHandle=()=>{ isExpend.value=!isExpend.value }
</script> 
<template>
<div :class="[isExpend===true?'expend':'']" style="display: flex;flex-direction: column;height: 200px;width: 200px;background-color: yellow;transition: height 2s" >
<!-- 图表 --> 
<div style="background-color: black"> 
<div style="height: 100%;width: 100%;background-color: blue">
<span>123</span>
</div>
<div style="height: 100%;width: 100%;background-color: red">
<span>123</span>
</div>
</div>
</div>
<div> <button @click="clickButtonHandle">点击</button>
</div>
</template>
<style scoped lang="scss">
.expend { height: 0 !important; }
</style>

外层 div 高度为 0

  • 当外层 div 高度为 0 时,内部 div 元素的高度为 100% 是相对于其父元素计算的。然而,如果父元素高度为 0,内部 div 理论上应该也是 0
  • 但是,浏览器在处理 flex 布局时,可能会根据内容进行布局调整,而不是完全遵循 height: 100% 的规则。

flex-direction: column

  • 当使用 flex-direction: column 时,子元素会根据其内容进行布局调整,即使父元素高度为 0
  • 浏览器可能会忽略 height: 0 的情况,保持子元素的内容可见性。

flex-direction: row

  • 当使用 flex-direction: row 时,子元素会按照水平方向进行排列,并且高度会严格按照父元素的高度进行继承。
  • 在这种情况下,如果父元素高度为 0,子元素的高度也会是 0

8.在calc中使用sass变量要用#{}包裹

width: calc((100% - #{$gutter-horizontal}) / 2);

9.perspective 属性应用于包含需要 3D 转换的子元素的父元素。通过定义父元素的透视距离,所有子元素的 3D 转换都会遵循这个透视效果。

perspective: 150rem;
-moz-perspective: 150rem;

10.background-blend-mode

background-blend-mode: screen;
background-image: url("../../img/nat-5.jpg"), linear-gradient(to right bottom, $color-secondary-light, $color-secondary-dark),;

11.-webkit-box-decoration-break: clone; /* 使用 -webkit- 前缀 */

box-decoration-break 属性有两个主要值:

  1. slice:这是默认值。装饰效果(如背景、边框)将在元素的所有片段之间平滑地延续,就像它们是一个连续的盒子一样。
  2. clone:装饰效果将在每个片段的起点和终点重新开始。每个片段将被视为一个独立的盒子,分别应用装饰效果。

默认情况下,当行内元素跨越多行时,其背景、边框等样式会在每行的开始和结束处被裁剪,这可能导致视觉效果的不连续。然而,使用box-decoration-break属性,可以改变这种默认行为,确保在跨行、跨列或跨页时,元素的样式能够保持连续性和一致性。

12.figure标签的作用??

<figure></figure>

13.浮动布局需要复习

14.shape-outside

-webkit-shape-outside

-webkit-shape-outside 是一个 CSS 属性,用于指定围绕一个浮动元素的内容流动的形状。这种形状可以是一个路径、一个图像的透明部分或基本几何形状。该属性主要用于增强视觉效果,使得文本和其他内容能够更自然地环绕图像或自定义形状。

使用场景

  • 创建图文混排效果:在网页设计中,常用 shape-outsidefloat 来创建更具吸引力和灵活性的图文混排效果。
  • 增强视觉效果:通过定义复杂的形状,可以使网页设计更加独特和吸引人。

15.clip-path也可以做自定义形状的裁剪

clip-path

区别总结

  1. 实现方式不同:

    • clip-path 是通过裁剪元素实现的。
    • border-radius 是通过调整元素的圆角边框实现的。
  2. 应用范围不同:

    • clip-path 更加灵活,可以创建复杂的形状裁剪。
    • border-radius 主要用于创建简单的圆形或圆角矩形。
  3. 影响区域不同:

    • clip-path 会隐藏元素的非裁剪部分,只显示裁剪区域。
    • border-radius 只是调整边角的显示效果,不隐藏任何部分。

选择使用

  • 如果只是将一个正方形变成圆形,border-radius: 50%; 更简单直接。
  • 如果需要创建更复杂的形状或裁剪效果,clip-path 是更好的选择。

16.transform 里面的属性在不同的地方定义不会自动叠加,不会生效

transform
& > * {
  transform: skewX(12deg);
}

&__shape {
  transform: translateX(-3rem) ;

}
这里的skewX就不会生效

17.大多数浏览器要求视频必须被静音(muted)才能自动播放

这是因为现代浏览器对自动播放视频有严格的限制,以避免自动播放视频给用户带来不良体验。大多数浏览器要求视频必须被静音(muted)才能自动播放。这个限制是为了避免视频在加载页面时未经用户允许就播放声音,打扰用户

18.object-fit

object-fit: cover; 是一个非常有用的 CSS 属性,特别是在处理图像和视频时。它可以控制如何缩放和裁剪元素的内容,以适应其容器,同时保持内容的宽高比

19.background-size和object-fit的区别

object-fit: cover;background-size: cover; 都用于调整元素内容的显示方式,但它们适用于不同的 HTML 元素,并有各自的特性和用途。下面是这两者的区别和使用场景。

object-fit: cover;

适用元素

  • 适用于 <img><video><picture> 等媒体元素。

功能

  • 控制媒体元素(如图像和视频)如何填充其容器。
  • object-fit: cover; 使媒体元素覆盖整个容器,同时保持其宽高比。可能会裁剪元素的一部分,以确保元素填满整个容器。

background-size: cover;

适用元素

  • 适用于背景图像(设置在 background-image 属性上)的元素,如 <div><section> 等。

功能

  • 控制背景图像如何填充其背景容器。
  • background-size: cover; 使背景图像完全覆盖其容器,同时保持图像的宽高比。背景图像可能会被裁剪,以确保它覆盖整个容器。

20.背景渐进色的用法

background-image:linear-gradient(105deg,rgba($color-white,.9) 0%,rgba($color-white,.9) 50%,transparent 50%), url("../../img/nat-10.jpg");

21.原生input的相关伪类

&__input
    &::-webkit-input-placeholder
   
    &:focus:invalid
   
    &:focus 
    
    &__input:placeholder-shown
    
    &__radio-input:checked ~ &__radio-label &__radio-         button::after {
      opacity: 1;
}


22.opacity 和 visibility的区别

opacity: 0;

  • 透明度:设置元素完全透明,但仍然占据页面上的空间。
  • 交互性:元素仍然可以被点击或接受其他用户交互,因为它实际上还是存在的,只是看不见。
  • 布局影响:元素仍然占据其原始位置,并影响周围布局。

visibility: hidden;

  • 可见性:完全隐藏元素,使其不可见。
  • 交互性:元素不会接受任何用户交互,因为它被隐藏了。
  • 布局影响:元素仍然占据其原始位置,并影响周围布局。

23.原生raiod需要定义一样的name这样才会实现单选的功能

24.在 card.scss 文件中使用 background-image: url("../img/"); 能够正确加载图片,是因为 Sass 在编译时会处理路径问题。Sass 会将路径相对于 main.scss 的位置进行解析,因此你只需确保路径的相对关系是正确的。

25.兄弟选择器有联动效果,其他都没有

兄弟选择器可以用于实现元素之间的联动效果。通过使用兄弟选择器,可以根据一个元素的状态或存在,来改变其兄弟元素的样式。这种方式特别适用于交互式设计,例如在复选框选中状态下改变旁边元素的样式等。

普通兄弟选择器 (~)

相邻兄弟选择器 (+)

26. 新接触到的css

column-count: 2;
column-gap: 4rem;
column-rule: 1px solid $color-grey-light-2;

column-countcolumn-gap 是 CSS 多列布局(Multi-column Layout)中的两个属性,用于创建多列布局并控制列之间的间距。这些属性在设计响应式布局时非常有用,特别是在需要将内容分成多个列的情况下。

27.hyphens在单词断层的时候可以有连字符

hyphens: auto;

28.:target伪类选择器的作用是,当URL的片段标识符与页面中某个元素的ID匹配时,应用特定的样式到该元素。

29.媒体查询的时候 应该大屏幕在最上面 小的在下面 不然会覆盖小的样式