前端知识海底捞之CSS

CSS 选择器的分类

基本的:
    1.id选择器(id="name")
    2.类选择器(class="head")
    3.标签选择器(body, div, ul, li)
    4.全局选择器(*)
复杂的:
    1.组合选择器(.head .head_logo)
    2.后代选择器 (#head .nav ul li 从父集到子孙集)
    3.群组选择器 (div, span, img {color:Red} 具有相同样式的标签分组显示)
    4.继承选择器
    5.伪类选择器(链接样式,a元素的伪类)
    6.子选择器(div>p, 带大于号>)
    7.CSS相邻相邻兄弟选择器(h1+p, 带加号+)

不同级别:总结排序:!important > 行内样式 > ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性

BFC

理解:BFC是css布局的一个概念,是一块独立的渲染区域,一个环境,里面的元素不会影响到外部的元素
如何生成BFC:(脱离文档流)
    1.根元素,即HTML元素(最大的一个BFC)
    2.float的值不为none
    3.position的值为absolute或fixed
    4.overflow的值不为visible(默认值。内容不会被修剪,会呈现在元素框之外)
    5.display的值为inline-block、table-cell、table-caption
BFC布局规则:
    1.内部的Box会在垂直方向,一个接一个地放置。
    2.属于同一个BFC的两个相邻的Box的margin会发生重叠
    3.BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此, 文字环绕效果,设置float
    4.BFC的区域不会与float box重叠。
    5.计算BFC的高度,浮动元素也参与计算
BFC作用:
    1.自适应两栏布局
    2.可以阻止元素被浮动元素覆盖
    3.可以包含浮动元素---清除内部浮动 原理::触发父div的BFC属性,使下面的子div都处在父div的同一个BFC区域之内
    4.分属于不同的BFC时,可以阻止margin重叠

列举不同的清除浮动的技巧

/* 1.添加新元素 */
<div class="outer">
  <div class="div1"></div>
  <div class="div2"></div>
  <div class="div3"></div>
  <div class="clearfix"></div>
</div>
.clearfix {
  clear: both;
}

/* 2.为父元素增加样式:BFC */
.clearfix {
  overflow: auto;
  zoom: 1; // 处理兼容性
}

/* 3.:after 伪元素方法 (作用于父元素) */
.outer {
  zoom: 1;
  &:after {
    display: block;
    height: 0;
    clear: both;
    content: ' ';
    visibility: hidden;
  }
}

移动端 1px 边框的问题

在移动端浏览器中以及某些桌面浏览器中,window对象有一个devicePixelRatio属性,它的官方的定义为:设备物理像素和设备独立像素的比例,也就是 devicePixelRatio = 物理像素 / 独立像素。

css中的 px 就可以看做是设备的独立像素,所以通过devicePixelRatio,我们可以知道该设备上一个 css 像素代表多少个物理像素。例如,在 Retina屏的 iphone上,devicePixelRatio的值为2,也就是说1个 css 像素相当于2个物理像素。 移动前端开发之 viewport 的深入理解

伪类 + transform 解决问题

单条border样式设置:

.scale-1px {
  position: relative;
  border:none;
}
.scale-1px:after {
  content: '';
  position: absolute;
  bottom: 0;
  background: #000;
  width: 100%;
  height: 1px;
  -webkit-transform: scaleY(0.5);
  transform: scaleY(0.5);
  -webkit-transform-origin: 0 0;
  transform-origin: 0 0;
}

四条boder样式设置:

.scale-1px {
  position: relative;
}
.scale-1px:after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  border: 1px solid #000;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  width: 200%;
  height: 200%;
  -webkit-transform: scale(0.5);
  transform: scale(0.5);
  -webkit-transform-origin: left top;
  transform-origin: left top;
}

圣杯布局和双飞翼布局的区别

圣杯布局和双飞翼布局解决的问题是一样的,就是两边顶宽,中间自适应的三栏布局,中间栏要在放在文档流前面以优先渲染。

圣杯布局和双飞翼布局解决问题的方案在前一半是相同的,也就是三栏全部float浮动,但左右两栏加上负 margin 让其跟中间栏div并排,以形成三栏布局。

不同在于解决“中间栏 div内容不被遮挡”问题的思路不一样:

  • 圣杯布局,为了中间div内容不被遮挡,将外层div设置了左右padding-leftpadding-right后,将左右两个div用相对布局 position: relative 并分别配合 rightleft 属性,以便左右两栏div 移动后不遮挡中间 div。
  • 双飞翼布局,为了中间div内容不被遮挡,直接在中间div内部创建子div用于放置内容,在该子div里用margin-leftmargin-right为左右两栏div留出位置。css布局
圣杯布局
<style>
    * {
      margin: 0;
      padding: 0;
    }
    .left,
    .center,
    .right {
      position: relative;
      float: left;
      height: 300px;
    }
    .wrapper {
      padding: 0 300px;
      overflow: hidden;
    }
    .left {
      left: -300px;
      margin-left: -100%;
      width: 300px;
      background: red;
    }
    .right {
      right: -300px;
      margin-left: -300px;
      width: 300px;
      background: green;
    }
    .center {
      width: 100%;
      background: blue;
    }
  </style>
双飞翼布局
<style>
  * {
    margin: 0;
    padding: 0;
  }
  .center {
    float: left;
    width: 100%;
    height: 300px;
    overflow: hidden;
    background-color: springgreen;
  }
  .content {
    margin: 0 300px;
    height: 100%;
    background-color: purple;
  }
  .left {
    float: left;
    width: 300px;
    height: 300px;
    background-color: pink;
    margin-left: -100%;
  }
  .right {
    float: left;
    width: 300px;
    height: 300px;
    background-color: pink;
    margin-left: -300px;
  }
</style>
<body>
<div class="wrapper">
  <div class="center">
    <div class="content"></div>
  </div>
  <div class="left"></div>
  <div class="right"></div>
</div>
</body>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容