如何实现两栏布局

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

  1. 直接使用 calc 计算 right 宽度
.left {
width: 200px;
background: red;
height: 100px;
float: left;
}
.right {
width: calc(100% - 200px);
background: black;
float: left;
height: 100px;
}
  1. 利用浮动,将左边元素宽度设置为 200px,并且设置向左浮动。将右边元素的 margin-left 设置为 200px,宽度设置为 auto(默认为 auto,撑满整个父元素)
.left {
width: 200px;
background: red;
height: 100px;
float: left;
}
.right {
background: black;
margin-left: 200px;
width: auto;
height: 100px;
}
  1. 利用 bfc 特性,将 right 设置成(overflow: hidden)触发 bfc(不会与浮动元素重叠)
.left {
width: 200px;
background: red;
height: 100px;
float: left;
}
.right {
background: black;
overflow: hidden;
height: 100px;
}
  1. flex 布局,将 right 的 flex 设置为 1,实现自动撑满父容器
.outer {
display: flex;
}
.left {
width: 200px;
background: red;
height: 100px;
}
.right {
background: black;
flex: 1;
height: 100px;
}
  1. 定位实现
.outer {
position: relative;
}
.left {
width: 200px;
background: red;
height: 100px;
position: absolute;
left: 0;
top: 0;
}
.right {
background: black;
height: 100px;
position: absolute;
left: 200px;
top: 0;
right: 0;
}

如何实现三栏布局

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

  1. 浮动实现

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

<div class="outer">
<div class="left"></div>
<div class="right"></div>
<div class="center"></div>
</div>
.left {
float: left;
width: 100px;
height: 100px;
background: red;
}
.right {
float: right;
width: 200px;
height: 100px;
background: pink;
}
.center {
height: 100px;
margin-left: 100px;
margin-right: 200px;
background: orange;
}
  1. calc 实现

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

.left {
float: left;
width: 100px;
height: 100px;
background: red;
}
.right {
float: right;
width: 200px;
height: 100px;
background: pink;
}
.center {
height: 100px;
width: calc(100% - 300px);
margin-left: 100px;
background: orange;
}
  1. 圣杯布局

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

.outer {
padding: 0 200px 0 100px;
}
.left {
width: 100px;
height: 100px;
float: left;
margin-left: -100px;
background: red;
}
.center {
height: 100px;
float: left;
background: orange;
width: 100%;
}
.right {
width: 200px;
height: 100px;
float: right;
background: pink;
margin-right: -200px;
}
  1. 双飞翼布局

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

.left {
width: 100px;
height: 100px;
float: left;
margin-left: calc(-100% + 200px); background: red;
}
.center_wrap {
margin: 0 200px 0 100px;
}
.center {
height: 100px;
float: left;
background: orange;
width: 100%;
}
.right {
width: 200px;
height: 100px;
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 {
width: 100px;
height: 100px;
background: red;
}
.center {
height: 100px;
flex: 1;
background: orange;
}
.right {
width: 200px;
height: 100px;
background: pink;
}
  1. 定位
.outer {
position: relative;
}
.left {
width: 100px;
height: 100px;
position: absolute;
left: 0;
top: 0;
background: red;
}
.center {
height: 100px;
left: 100px;
position: absolute;
right: 200px;
top: 0;
background: orange;
}
.right {
width: 200px;
height: 100px;
background: pink;
position: absolute;
right: 0;
top: 0;
}
  1. grid 布局

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

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

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

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

div {
width: 0;
height: 0;
border: 100px solid;
border-color: red black pink green;
}

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

div {
width: 0;
height: 0;
border: 100px solid;
border-color: red transparent transparent transparent;
}

如何利用 css 实现一个扇形

很简单,加个 border-radius 即可

div {
width: 0;
height: 0;
border: 100px solid;
border-color: red transparent transparent transparent;
border-radius: 50%;
}

画一条 0.5px 的线

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

  1. 采用 transform: scale()的方式
transform: scale(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 前端进阶

CSS中常见的场景实现的更多相关文章

  1. div+css中常见的浏览器兼容性处理-兼容不同浏览器

    在网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使用DIV CSS设计的网,就应该更注意IE6 IE7 FF对CSS样式的兼容,不然,你的网乱可能出去不想出现的效果! div+cs ...

  2. css中常见几种float方式以及倒计时(刷新页面不清)

    css中常见几种float方式 http://jingyan.baidu.com/article/72ee561a670269e16138dfd5.html <script type=" ...

  3. CSS中常见的布局

    一.css中常见的布局有哪些? (1)两列布局 (2)三列布局 (3)弹性布局 (4)圣杯布局 (5)双飞翼布局 二.具体实现  (1)两列布局 https://www.cnblogs.com/qin ...

  4. css3系列-2.css中常见的样式属性和值

    css3系列-2.css中常见的样式属性和值 继续上一篇文章的继续了解css的基础知识,关注我微信公众号:全栈学习笔记 css中常见的样式属性和值 字体与颜色 背景属性 文本属性 边框属性 内外边距 ...

  5. postman中环境变量的设置方法、使用方法和实际中常见使用场景

    文中共介绍2种添加环境变量的方法.2种使用环境变量的方法,以及不同方法的适用范围. 文中给出了环境变量的两种常见使用场景:切换环境.动态参数关联(前一个请求的响应作为下一个请求的入参) 2种添加环境变 ...

  6. CSS中常见的长度单位

    原文地址:https://segmentfault.com/a/1190000008934791?utm_source=tuicool&utm_medium=referral px - 像素 ...

  7. css中常见中文字体的英文名称

    曾经看过一些文章,建议CSS中字体应用英文来替代,但一直未引起我重视.最近官网改版,今天同事测试发现Mac的Safari总是显示宋体 → → 修改font-family:"微软雅黑" ...

  8. CSS中常见的BUG调试

    1.布局--layout 布局是windows提出的概念,用于控制元素的尺寸和定位. 拥有布局的元素负责自身及其子元素的尺寸及定位,而没有布局的元素仅仅能依靠近期的祖先元素进行控制. 通常在IE6中出 ...

  9. css中常见的属性-----在路上(14)

    一.css文字属性 color : #999999; /*文字颜色*/ font-family : 宋体,sans-serif; /*文字字体*/ font-size : 9pt; /*文字大小*/ ...

  10. CSS中常见的6种文本样式

    前面的话 CSS文本样式是相对于内容进行的样式修饰.由于在层叠关系中,内容要高于背景.所以文本样式相对而言更加重要.有些人对文本和字体样式之间的不同不太了解,简单地讲,文本是内容,而字体则用于显示这个 ...

随机推荐

  1. 剑指 offer 第 8 天

    第 8 天 动态规划(简单) 剑指 Offer 10- I. 斐波那契数列 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N)).斐波那契数列的定义如下: F(0) ...

  2. flutter issue---->Scaffold.of(context)

    当我们想showSnackBar的时候,需要通过Scaffold.of(context)得到Scaffold.但是如果这个context用错的话,flutter就会抛出错误.下面我们通过代码仔细看一下 ...

  3. Knockin' On PHP's Door ---PHP入门必知(持续更新)

    1.->.=> 和 :: 区别: ::   类中调用静态方法时用->  类中调用属性和非静态方法=> 是键值对,比如在关联数组中用 $arr = ["name&quo ...

  4. jmeter分布式测试安装部署步骤

    一.下载linux版本的jdk ----注:下载的jdk和jmeter要与window的jdk和jmeter一致 下载地址:https://www.oracle.com/java/technologi ...

  5. Terraform 系列-Terraform 简介

    系列文章 Terraform 系列文章 前言 最近在使用 Terraform 来置备 OCI 的 Always Free Tier, 发现它非常好用.总结学习下:Terraform 的基础知识. 什么 ...

  6. CentOS 7 更改内网 IP

    打开网络配置文件 vim /etc/sysconfig/network-scripts/ifcfg-em2 修改配置文件如下 TYPE=Ethernet PROXY_METHOD=none BROWS ...

  7. 使用js截取路径参数方法

    1.根据传入的路径和参数名称截取 export function getUrlParams(href,name) { var reg = new RegExp("(^|\\?|&)& ...

  8. SQL Server 2022 AlwaysOn新特性之包含可用性组介绍

    由于技术能力有限,文章仅能进行简要分析和说明,如有不对的地方,请指正,谢谢. SQL Server的容灾功能一直弱于Oracle和MySQL,无法自动同步元数据(用户.登录名.权限.SQL 代理作业. ...

  9. ElementPlus 组件全局配置

    友链:语雀,在线文档协同平台 官方提供的全局配置:Config Provider 本文只做简单的模板参考,具体的配置请根据自己的业务灵活设置,如果你使用的是其它的ui框架,原理应该都差不多 入口文件的 ...

  10. Java Lambda Stream

    ::方法使用 条件:lambada表达式的主体仅包含一个表达式,且lambada表达式只调用一个已经存在的方法:被引用的方法的参数列表与lambada表达式的输入输出一致 以下是Java 8中方法引用 ...