css杂记

css的引入方式

嵌入式,内联样式style标签、外部css文件link、在a.css样式中引入b.css的样式: @import url(./b.css)

块级元素高度

由其内部文档流元素的高度总和决定的。

行内块级元素的高度

line-height可以确定行内块级元素的高度。

文档流

文档内元素的流动方式。内联元素从左往右流,如果宽度不够就换行。每个块级元素独占一行,从上往下。

脱离文档流

position:absolute position:fixed float都能使元素脱离文档流。

清除浮动

.clearfix::after{
  content:'';
  display:block;
  clear:both;
}

box-sizing的content-box和border-box区别

content-box 的 width 不包括 padding 和 border
border-box 的 width 包括 padding 和 border

非空标签才有伪类,伪类就是::before ::after

css居中的多种方式

  1. flex布局实现垂直居中。推荐flex阮一峰
  2. grid布局实现居中。(兼容还不太好)
  3. display:table-cell实现垂直居中。使用到vertical-align: middle

vertical-align只对行级元素display:table-cell生效。行级元素包括inline-block.

vertical-align && display:table-cell

//html
<div class="father">
  <div class="container2">
     <span class="child2">
       hello
     </span>
  </div>
</div>

//css

.father{
  display:table;
  width:200px;
  height:200px;
  margin-top:20px;
  border:1px solid red;
  text-align:center;
}
.container2{
  display:table-cell;
  vertical-align:middle;
}
.child2{
  display:inline-block;
  padding:10px;
  border:1px solid;
  box-shadow:0 0 2px 2px rgba(0,0,0,0.2);
}

//html
<div class="container">
  hello
</div>

//css

.container{
  width:200px;
  height:200px;
  border:1px solid red;
  text-align:center;
}
.container::before {
  content: '';
  display: inline-block;
  width: 0;
  height: 100%;
  vertical-align: middle;
}
  1. 使用绝对定位。
.container {
    position: relative;
}
.child {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
  1. 简单的居中


    1.png

加上下padding,就可以实现垂直居中;

  1. 使用line-height实现垂直居中。text-align:center实现水平居中。

左边固定宽度,右侧自适应

position:fixed

//html
<div class="left"></div>
<div class="right">
  <span>hello</span>
</div>

/*css*/
body{
  margin:0;
}
.left{
  width:200px;
  background:#ccc;
  height:100%;
  position:fixed;
}
.right{
  background:#f06060;
  margin-left:200px;
  height:1500px;
}
span{
  display:block;
  border:1px solid;
}

利用float

//html
<div class="father"></div>
<div class="mother">
  <div class="child"></div>
</div>
//css
.father{
  width:100px;
  height:500px;
  border:1px solid;
  float:left;
  margin-right:1px;
}
.mother{
  height:500px;
  overflow:hidden; 
  background-color:#ccc;
}
.child{
  width:100px;
  height:100px;
  background-color: #f06060;
}

table方式

//html
<div class="pather">
  <div class="left"></div>
  <div class="right"></div>
</div>

//css
.pather{
  display:table;
  width: 100%;
  table-layout: fixed;
  background-color: #333;
  border:1px solid;
  background-color: #fff;
}
.left,.right{
   display: table-cell;
}
.left{
    width: 100px;
    margin-right: 20px;
    height:500px;
    background-color: #000;
}
.right{
  background-color: #f06060;
}

flex方式

//html
<div class="pather">
 <div class="left"></div>
 <div class="right"></div>
</div>

//css
.pather{
  display:flex;
  height:200px;
}
.left{
  margin-right:0x;
  width:100px;
  background-color: #000;
}
.right{
  flex:1;
  background-color: #f06060
}

还可以使用calc()实现左右布局。

中间自适应,左右固定。

取自圣杯布局

//html
<div class="father">
  <div class="container col">container</div>
  <div class="left col">left</div>
  <div class="right col">right</div>
</div>

//css
.col{
  color:#fff;
  height:500px;
  float:left;
  position:relative;
}
.left{
  width:200px;
  background-color: #333;
  margin-left:-100%;
  left:-200px;
}
.container{
  width:100%;
  background-color: #f06060;
}
.right{
  width:200px;
  background-color: #ddd;
  margin-left:-200px;
  right:-200px;
}
.father{
  padding:0 200px 0 200px;
}

position

//html
<div class="container col">container</div>
<div class="left col">left</div>
<div class="right col">right</div>
//css
.col{
  color:#fff;
  height:500px;
  position:absolute;
}
.left{
  width:200px;
  background-color: #333;
  top:0;
  left:0;
}
.container{
  width:100%;
  background-color: #f06060;
  top:0;
  left:0;
  margin:0 200px 0 200px;
}
.right{
  width:200px;
  background-color: #ddd;
  right:0;
  top:0;
}

calc()

//html
<div class="left col">left</div>
<div class="container col">container</div>
<div class="right col">right</div>
//css
.col{
  color:#fff;
  height:500px;
  float:left;
}
.left{
  width:200px;
  background-color: #333;
}
.container{
  width:calc(100% - 400px);
  background-color: #f06060;
}
.right{
  width:200px;
  background-color: #ddd;
}

圣杯布局

//html
<div class="container">
 <div class="header">header</div>
 <div class="wrapper clearfix">
    <div class="main col">main</div>
    <div class="left col">left</div>
    <div class="right col">right</div>
 </div>
 <div class="footer">footer</div>
</div>

//css
.container {
  width: 600px;
  margin: 50px auto;
  border:1px solid red;
}
.header,.footer{
  height:50px;
  color:#fff;
  background-color: #333;
}
.col{
  float:left;
  height:200px;
  position:relative;
}
.clearfix::after{
  content:'';
  display:block;
  clear:both;
}
.main{
  width:100%;
  background-color: #eee; 
}
.left{
  width:200px;
  background-color: #ddd;
  margin-left:-100%;
  left:-200px;
}
.right{
  width:200px;
  background-color: #ddd;
  margin-left:-200px;
  right:-200px;
}
.wrapper{
  padding:0 200px 0 200px;
}

等高

//html
<div class="father">
  <div class="left">
     <div class="child">
       <p>yiersan</p>
       <p>siwuliu</p>
     </div>
  </div>
  <div class="right"></div>
  <div class="other"></div>
</div>
//css
.left{
  width:200px;
  float:left;
  background-color: #eee;
}
.right{
  overflow:hidden;
  background-color: #ddd;
  float:left;
  width:200px;
}
.left,.right,.other{
   padding-bottom: 9999px;
   margin-bottom: -9999px;
}

.other{
  overflow:hidden;
  background-color: #333;
}
.father{
  overflow:hidden;
}

table实现

//html
<div class="father">
  <div class="left">
     <div class="child">
       <p>yiersan</p>
       <p>siwuliu</p>
     </div>
  </div>
  <div class="right"></div>
</div>
//css
.father{
  width:100%;
  display:table;
}
.left{
  width:200px;
  margin-right:20px;
  display:table-cell;
  background-color: #ddd;
}
.right{
  display:table-cell;
  background-color: #eee;
}

flex实现

//html和上方的相同
//css
.father{
  display:flex;
  width:100%;
}
.left{
  width:100px;
  background-color: #ddd;
}
.right{
  flex:1;
  background-color: #eee;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,748评论 1 92
  • 1. 前言 前端圈有个“梗”:在面试时,问个css的position属性能刷掉一半人,其中不乏工作四五年的同学。在...
    YjWorld阅读 4,440评论 5 15
  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 3,466评论 0 6
  • Date: 2018/9/8 和-和氣,小事不與人爭。 合-合作,以團體為優個人為後。 美-完美,對自己表現要求高...
    采灵22阅读 295评论 2 1
  • 经过三天的适应和调整,今天开始了以拉萨为起点的西行旅程。早上6点出发,到达羊卓雍措时太阳已升起。我们已第三次来羊湖...
    zhanglun阅读 207评论 0 0