CSS中常见的场景实现
如何实现两栏布局
实现两栏布局一般指的是左边固定,右边自适应,这里给出几个案例给大家参考
- 直接使用 calc 计算 right 宽度
.left {
width: 200px;
background: red;
height: 100px;
float: left;
}
.right {
width: calc(100% - 200px);
background: black;
float: left;
height: 100px;
}
- 利用浮动,将左边元素宽度设置为 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;
}
- 利用 bfc 特性,将 right 设置成(overflow: hidden)触发 bfc(不会与浮动元素重叠)
.left {
width: 200px;
background: red;
height: 100px;
float: left;
}
.right {
background: black;
overflow: hidden;
height: 100px;
}
- flex 布局,将 right 的 flex 设置为 1,实现自动撑满父容器
.outer {
display: flex;
}
.left {
width: 200px;
background: red;
height: 100px;
}
.right {
background: black;
flex: 1;
height: 100px;
}
- 定位实现
.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;
}
如何实现三栏布局
一般是指两边固定宽度,中间自适应的布局
- 浮动实现
注意这里必须将中间的盒子 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;
}
- 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;
}
- 圣杯布局
给父容器设置左右 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;
}
- 双飞翼布局
双飞翼布局和圣杯布局的不同之处是通过给 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>
- 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;
}
- 定位
.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;
}
- 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 的,为了考虑兼容性,有以下几种方案
- 采用 transform: scale()的方式
transform: scale(0.5, 0.5);
- 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中常见的场景实现的更多相关文章
- div+css中常见的浏览器兼容性处理-兼容不同浏览器
在网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使用DIV CSS设计的网,就应该更注意IE6 IE7 FF对CSS样式的兼容,不然,你的网乱可能出去不想出现的效果! div+cs ...
- css中常见几种float方式以及倒计时(刷新页面不清)
css中常见几种float方式 http://jingyan.baidu.com/article/72ee561a670269e16138dfd5.html <script type=" ...
- CSS中常见的布局
一.css中常见的布局有哪些? (1)两列布局 (2)三列布局 (3)弹性布局 (4)圣杯布局 (5)双飞翼布局 二.具体实现 (1)两列布局 https://www.cnblogs.com/qin ...
- css3系列-2.css中常见的样式属性和值
css3系列-2.css中常见的样式属性和值 继续上一篇文章的继续了解css的基础知识,关注我微信公众号:全栈学习笔记 css中常见的样式属性和值 字体与颜色 背景属性 文本属性 边框属性 内外边距 ...
- postman中环境变量的设置方法、使用方法和实际中常见使用场景
文中共介绍2种添加环境变量的方法.2种使用环境变量的方法,以及不同方法的适用范围. 文中给出了环境变量的两种常见使用场景:切换环境.动态参数关联(前一个请求的响应作为下一个请求的入参) 2种添加环境变 ...
- CSS中常见的长度单位
原文地址:https://segmentfault.com/a/1190000008934791?utm_source=tuicool&utm_medium=referral px - 像素 ...
- css中常见中文字体的英文名称
曾经看过一些文章,建议CSS中字体应用英文来替代,但一直未引起我重视.最近官网改版,今天同事测试发现Mac的Safari总是显示宋体 → → 修改font-family:"微软雅黑" ...
- CSS中常见的BUG调试
1.布局--layout 布局是windows提出的概念,用于控制元素的尺寸和定位. 拥有布局的元素负责自身及其子元素的尺寸及定位,而没有布局的元素仅仅能依靠近期的祖先元素进行控制. 通常在IE6中出 ...
- css中常见的属性-----在路上(14)
一.css文字属性 color : #999999; /*文字颜色*/ font-family : 宋体,sans-serif; /*文字字体*/ font-size : 9pt; /*文字大小*/ ...
- CSS中常见的6种文本样式
前面的话 CSS文本样式是相对于内容进行的样式修饰.由于在层叠关系中,内容要高于背景.所以文本样式相对而言更加重要.有些人对文本和字体样式之间的不同不太了解,简单地讲,文本是内容,而字体则用于显示这个 ...
随机推荐
- 剑指 offer 第 4 天
第 4 天 查找算法(简单) 剑指 Offer 03. 数组中重复的数字 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但 ...
- 用 Go 剑指 Offer 09. 用两个栈实现队列
用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元素,deleteHea ...
- Wiki.js配置LDAP认证
安装好wikijs 之后, 可以进行进一步的详细配置. 这里介绍 LDAP 认证的配置. 在 管理 -> 身份验证 -> 添加策略 -> 选择 LDAP/AD , 如下: 接下来进行 ...
- MINIO搭建单机以及集群
MINIO简介 Minio是Apache License v2.0下发布的对象存储服务器.它与Amazon S3云存储服务兼容.它最适合存储非结构化数据,如照片,视频,日志文件,备份和容器/VM映像. ...
- python入门教程之十一迭代器、生成器和装饰器
迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退 ...
- 《花雕学AI》13:早出对策,积极应对ChatGPT带来的一系列风险和挑战
ChatGPT是一款能和人类聊天的机器人,它可以学习和理解人类语言,也可以帮人们做一些工作,比如翻译.写文章.写代码等.ChatGPT很强大,让很多人感兴趣,也让很多人担心. 使用ChatGPT有一些 ...
- VMWare无法从主机向虚拟机复制粘贴
VMWare无法从主机向虚拟机复制粘贴 问题描述 无法在本机和虚拟机之间实现复制粘贴和文件拖到功能. 系统环境 本机 Windows10 虚拟机 Centos7 解决方法 多次尝试重新安装VMware ...
- 帝国cms 随机调取新闻
<?php $hits_r = $empire->query("select * from {$dbtbpre}ecms_music as t1 join (select rou ...
- spring boot过滤器实现项目内接口过滤
spring boot过滤器实现项目内接口过滤 业务 由于业务需求,存在两套项目,一套是路由中心,一套是业务系统. 现在存在问题是,路由中心集成了微信公众号与小程序模块功能,业务系统部署了多套服务. ...
- c语言趣味编程(3)打鱼还是筛网
一.问题描述 中国有句俗语叫"三天打鱼两天晒网".某人从1990年1月1日起开始"三天打鱼两天晒网",问这个人在以后的以后的某一天中是打鱼还是晒网. 二.设计思 ...