CSS 知识集锦三

6 篇文章 0 订阅
3 篇文章 0 订阅

CSS知识集锦二


学习计划参考字节飞书的学习计划 - 超清楚(必看))

部分内容摘自MDN CSS(层叠样式表)

参考文章CSS 性能优化还有哪些方法)


一、CSS性能优化

  • 使用简写
    margin-left: 10px;
    margin-right: 10px;
    /* 直接按下面的写法可以减少css文件的大小 */
    margin: 0 10px;
    
  • 删除没使用的CSS
  • 注意放在<head>的内联样式的大小,放在上面会有阻塞的问题;
  • 避免使用@import,外部的css文件中使用@import会使得页面在加载时增加额外的延迟
  • 合并多个CSS文件
  • 减少CSS嵌套,CSS规则是从右往左查找,嵌套越多,效率越慢
  • 避免在ID选择器嵌套,ID选择器本身就是唯一的,且权重值很大;
  • 继承的属性父级定义好了的话,子级元素无需重复定义;
  • 重复的样式尽量做成公共样式;
  • 减少通配符*的使用,全局样式的查找遍历性能方面影响较大;
  • CSSsprite 雪碧图,多个icon使用这种方式生成一张图片,减少不必要的请求;
  • CSS压缩;
  • gzip压缩;
  • 动画用绝对定位,避免在正常文档流运动时导致浏览器不断重排

二、层叠上下文

摘自MDN 层叠上下文

假定用户正面向(浏览器)视窗或网页,而 HTML 元素沿着其相对于用户的一条虚构的 z 轴排开,层叠上下文就是对这些 HTML 元素的一个三维构想。众 HTML 元素基于其元素属性按照优先级顺序占据这个空间。

形成层叠上下文

  • 文档根元素(<html>);
  • position 值为 absolute(绝对定位)或 relative(相对定位)且 z-index 值不为 auto 的元素;
  • position 值为 fixed(固定定位)或 sticky(粘性定位)的元素(沾滞定位适配所有移动设备上的浏览器,但老的桌面浏览器不支持);
  • flex (flexbox) 容器的子元素,且 z-index 值不为 auto
  • grid 容器的子元素,且 z-index 值不为 auto
  • opacity 属性值小于 1 的元素);
  • mix-blend-mode 属性值不为 normal 的元素;
  • 以下任意属性值不为 none 的元素:
    • transform
    • filter
    • perspective
    • clip-path
    • mask / mask-image / mask-border
  • isolation 属性值为 isolate 的元素;
  • webkit-overflow-scrolling 属性值为 touch 的元素;
  • will-change 值设定了任一属性而该属性在 non-initial 值时会创建层叠上下文的元素;
  • contain 属性值为 layoutpaint 或包含它们其中之一的合成值(比如 contain: strict、contain: content)的元素。

总结:

  • 层叠上下文可以包含在其他层叠上下文中,并且一起创建一个层叠上下文的层级。
  • 每个层叠上下文都完全独立于它的兄弟元素:当处理层叠时只考虑子元素。
  • 每个层叠上下文都是自包含的:当一个元素的内容发生层叠后,该元素将被作为整体在父级层叠上下文中按顺序进行层叠。

三、div居中

具体效果查看CodePen链接

<div class="flexbox">
  <div class="child1"></div>
</div>

<div class="positionbox">
  <div class="child2"></div>
</div>

<div class="tablecell">
  <div class="child3"></div>
</div>
.flexbox, .positionbox, .tablecell {
  width: 200px;
  height: 200px;
  margin-bottom: 10px;
}

.child1, .child2, .child3 {
  height: 50px;
  width: 50px;
  background: #f3f3f3;
}

/* flex 布局 */
.flexbox {
  display: flex;
  align-items: center;
  justify-content: center;
  background: yellow;
}
/* 定位 */
.positionbox {
  position: relative;
  background: pink;
}
.child2 {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

/* table-cell布局 */
.tablecell {
  display: table-cell;
  background: blue;
  vertical-align: middle;
}

.child3 {
  margin: auto;
}

四、浮动

当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这个现象叫浮动溢出

清除浮动的方式:

  • 方法一:在浮动元素后使用带clear属性的空元素
.news {
  background-color: gray;
  border: solid 1px black;
  }

.news img {
  float: left;
  }

.news p {
  float: right;
  }

.clear {
  clear: both;
  }
<div class="news">
    <img src="news-pic.jpg" />
    <p>some text</p>
    <div class="clear"></div>
</div>
  • 方法二:浮动元素的容器元素触发BFC

  • 方法三: 使用CSS的:after伪元素,和方法一类似只是用伪元素实现;
    浮动元素的容器添加一个clearfix的class,然后给这个class添加一个:after伪元素实现元素末尾添加一个看不见的块元素(Block element)清理浮动。

.news img {
  float: left;
  }

.news p {
  float: right;
  }

.clearfix:after{
  content: "020"; 
  display: block; 
  height: 0; 
  clear: both; 
  visibility: hidden;  
  }
  
<div class="news">
	<img src="news-pic.jpg" />
	<p>some text</p>
</div>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML5和CSS是网页开发中常用的两种技术。HTML5是一种用于创建网页结构和内容的标记语言,而CSS则是一种用于控制网页样式和布局的样式表语言。 在使用HTML5和CSS进行网页开发时,我们通常需要注意以下几个知识点: 1. HTML标签和语法:HTML5引入了许多新的标签和语法规则,如<header>、<footer>、<nav>等,这些标签可以更好地表示网页的结构和语义。此外,还需要熟悉HTML标签的基本用法和语法规则。 2. CSS选择器和样式:CSS用于控制网页的样式,通过选择器选中HTML元素,并为其定义样式。常用的CSS选择器有标签选择器、类选择器、ID选择器等,可以根据需要选择正确的选择器来修改对应的元素样式。 3. CSS布局:CSS可以用于实现网页的布局,通过盒模型、浮动、定位等属性可以实现各种布局效果,比如居中布局、栅格布局等。 4. 响应式设计:随着移动设备的普及,响应式设计成为了重要的一个概念。通过使用媒体查询和流式布局等技术,可以使网页在不同的设备上自适应地显示。 5. CSS动画和过渡效果:CSS3引入了许多新的动画和过渡效果,通过使用关键帧、过渡和变换等属性,可以实现各种动态效果。 需要注意的是,在使用HTML5和CSS进行网页开发时,我们需要遵循W3C制定的标准,确保网页的兼容性和可访问性。同时,也可以结合JavaScript等其他技术来增强网页的交互性和功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [HTML5CSS3知识点总结(一)](https://blog.csdn.net/qq_63778549/article/details/122047919)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值