2023面试题大全(CSS场景篇)

如何实现两栏布局

实现两栏布局一般指的是左边固定,右边自适应,这里给出几个案例给大家参考

2023面试题大全(CSS场景篇)
image.png
  1. 直接使用 calc 计算 right 宽度
.left {
  width200px;
  background: red;
  height100px;
  float: left;
}
.right {
  widthcalc(100% - 200px);
  background: black;
  float: left;
  height100px;
}
  1. 利用浮动,将左边元素宽度设置为 200px,并且设置向左浮动。将右边元素的 margin-left 设置为 200px,宽度设置为 auto(默认为 auto,撑满整个父元素)
.left {
  width200px;
  background: red;
  height100px;
  float: left;
}
.right {
  background: black;
  margin-left200px;
  width: auto;
  height100px;
}
  1. 利用 bfc 特性,将 right 设置成(overflow: hidden)触发 bfc(不会与浮动元素重叠)
.left {
  width200px;
  background: red;
  height100px;
  float: left;
}
.right {
  background: black;
  overflow: hidden;
  height100px;
}
  1. flex 布局,将 right 的 flex 设置为 1,实现自动撑满父容器
.outer {
  display: flex;
}
.left {
  width200px;
  background: red;
  height100px;
}
.right {
  background: black;
  flex1;
  height100px;
}
  1. 定位实现
.outer {
  position: relative;
}
.left {
  width200px;
  background: red;
  height100px;
  position: absolute;
  left0;
  top0;
}
.right {
  background: black;
  height100px;
  position: absolute;
  left200px;
  top0;
  right0;
}

如何实现三栏布局

一般是指两边固定宽度,中间自适应的布局

2023面试题大全(CSS场景篇)
image.png
  1. 浮动实现

注意这里必须将中间的盒子 center 放到最后,因为如果放在第二位它会独占一行,下一个浮动元素将会换行

<div class="outer">
  <div class="left"></div>
  <div class="right"></div>
  <div class="center"></div>
</div>
.left {
  float: left;
  width100px;
  height100px;
  background: red;
}
.right {
  float: right;
  width200px;
  height100px;
  background: pink;
}
.center {
  height100px;
  margin-left100px;
  margin-right200px;
  background: orange;
}
  1. calc 实现

与第一种类似,只不过动态计算了 center 宽度

.left {
  float: left;
  width100px;
  height100px;
  background: red;
}
.right {
  float: right;
  width200px;
  height100px;
  background: pink;
}
.center {
  height100px;
  widthcalc(100% - 300px);
  margin-left100px;
  background: orange;
}
  1. 圣杯布局

给父容器设置左右 padding 留出空间,然后再给 left 和 right 设置负 margin 让其移上来

.outer {
  padding0 200px 0 100px;
}
.left {
  width100px;
  height100px;
  float: left;
  margin-left: -100px;
  background: red;
}
.center {
  height100px;
  float: left;
  background: orange;
  width100%;
}
.right {
  width200px;
  height100px;
  float: right;
  background: pink;
  margin-right: -200px;
}
  1. 双飞翼布局

双飞翼布局和圣杯布局的不同之处是通过给 center 套个盒子,通过它的 margin 来留出空间,注意,它要放在最前面

.left {
  width100px;
  height100px;
  float: left;
  margin-leftcalc(-100% + 200px);

  background: red;
}
.center_wrap {
  margin0 200px 0 100px;
}
.center {
  height100px;
  float: left;
  background: orange;
  width100%;
}
.right {
  width200px;
  height100px;
  float: left;
  background: pink;
  margin-right: -200px;
}
<div class="outer">
  <div class="center_wrap">
    <div class="center"></div>
  </div>
  <div class="left"></div>
  <div class="right"></div>
</div>
  1. flex 布局

使用 flex 布局是非常容易实现的,两边设置宽度,中间 flex:1,宽度撑满整个容器

.outer {
  display: flex;
}
.left {
  width100px;
  height100px;
  background: red;
}
.center {
  height100px;
  flex1;
  background: orange;
}
.right {
  width200px;
  height100px;
  background: pink;
}
  1. 定位
.outer {
  position: relative;
}
.left {
  width100px;
  height100px;
  position: absolute;
  left0;
  top0;
  background: red;
}
.center {
  height100px;
  left100px;
  position: absolute;
  right200px;
  top0;
  background: orange;
}
.right {
  width200px;
  height100px;
  background: pink;
  position: absolute;
  right0;
  top0;
}
  1. grid 布局

使用 grid 则是最简单的,给父元素设置:display:grid,grid-template-colums:左盒子宽度 auto 右盒子宽度,grid-template-rows:高度

.outer {
  display: grid;
  grid-template-columns100px auto 200px;
  grid-template-rows100px;
}
.left {
  background: red;
}
.center {
  background: orange;
}
.right {
  background: pink;
}

如何利用 css 实现一个三角形

CSS 绘制三角形主要用到的是 border 属性,border 属性是由三角形组成的,如果设置很粗的话就能看出来,比如

div {
  width0;
  height0;
  border100px solid;
  border-color: red black pink green;
}
2023面试题大全(CSS场景篇)
image.png

所以可以利用这个特性来绘制三角形,如

div {
  width0;
  height0;
  border100px solid;
  border-color: red transparent transparent transparent;
}
2023面试题大全(CSS场景篇)
image.png

如何利用 css 实现一个扇形

很简单,加个 border-radius 即可

div {
  width0;
  height0;
  border100px solid;
  border-color: red transparent transparent transparent;
  border-radius50%;
}

画一条 0.5px 的线

正常情况下最小单位是 1px,当然也有现代浏览器也支持 0.5px 的,为了考虑兼容性,有以下几种方案

  1. 采用 transform: scale()的方式
transformscale(0.5, 0.5);
  1. meta viewport

我们经常可以看到 meta viewport 中有initial-scale=1这样一个熟悉,其实它是用来规定页面的初始缩放的,可以设置成 0.5,这样页面的 1px 其实就是 0.5px 了

<meta name="viewport" content="width=device-width, initial-scale=0.5" />

css 的实现场景题还有很多,由于篇幅原因先写这些,后续会持续更新,欢迎关注公众号web 前端进阶



2023面试题大全(CSS场景篇)



原文始发于微信公众号(web前端进阶):2023面试题大全(CSS场景篇)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/247142.html

(0)
青莲明月的头像青莲明月

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!