《响应式Web设计:HTML5和CSS3实战(第2版)》05章 - 学习笔记

响应式Web设计:HTML5和CSS3实战(第2版)

第五章 CSS3 新特性

5.1 CSS能实现什么要心里有数

5.2 CSS 规则

5.3 CSS 技巧

  • CSS 响应式多列布局
    • 例子:column-width: 12em;
    • 固定列数,可变宽度:
    .main{
        column-count: 3;
    }
 + 添加列间距和分隔线
    .mian{
      column-gap: 2em;
      column-rule: thin dotted #999;
      column-width: 12em;
    }
  • 如果每一列的文字长度太长,可能影响用户体验

5.4 断字

  • 如果要将一行很长的文字放入一个比较窄的容器内
    • 在容器上加一个word-wrap: break-word;
    • 此时文字会在需要的地方拆开一个独立的单词,完成换行
  • 截短文本
  .main{
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
  }
  • 创建水平滚动面板
    • white-space: nowrap
      • 意思是在有空白的时候不折行
    • display: inline-block / inline-flex / inline-table
      • 将所有元素保持在一行
    • :after 和 :before
      • 为了能保证其能显示,必须包含一个content,就算为' '空白也行
  • 隐藏滚动条
  .scroll-wrapper {
    width: 100%;
    white-space: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    // 在webkit设备上出现
    -webkit-overflow-scrolling: touch; 
    // 在支持的IE中删除滚动条
    -ms-overflow-style: none;
  }

  // 防止webkit浏览器出现滚动条
  .scroll-wrapper::-webkit-scrollbar{
    display: none;
  }
  • 此时空间有限时,就会出现水平滚动面板,否则会自适应

5.5 在CSS中创建分支

  1. 完全基于CSS
  2. 借助js库,获得广泛兼容性
5.5.1 特性查询
  • 涵盖不支持@support的设备,需要先写好默认的声明
  .item{
    display: inline-block;
  }
  @supports (display: flex;) {
    .item{
      display: inline-flex;
    }
  }
5.5.2 组合条件
  • and 关键字 && or 关键字
  @supports ((display: flex;) and (pointer: coarse)) or (transform: translate3d(0, 0, 0)) {
    .item{
      display: inline-flex;
    }
  }
5.5.3 Modernizr
  • 实现分支的最可靠方式
    • 在head中引入Modernizr.js
    • 检测特性后,会在html上加一些类

5.6 新CSS3选择符

5.6.1 属性选择符
  • CSS2不支持
  /*选择包含alt属性的img元素*/
  img[alt]{
    // ...
  }

  /*选择包含‘data-sausage’的任何元素*/
  [data-sausage]{
    // ...
  }

  /*具体值属性*/
  img[alt="sausage"]{
    // ...
  }
5.6.2 CSS3子字符串匹配属性选择符
  • 以。。。开头
    • ^=
    • <img alt="film-china" src="...">
    • img[alt^="film"]{}
  • 包含。。。
    • *=
    • <p data-xxx="aa bb cc">...</p>
    • p[data-xxx*="bb"]{}
  • 以。。。结尾
    • $=
    • <p data-xxx="aa bb cc">...</p>
    • p[data-xxx$="cc"]{}
5.6.3 属性选择符发注意事项
  • 对属性选择符来说,属性是一个字符串
  • 某两个子字符串存在为依据选择元素
      [data-xxx*="aa"][data-xx*="bb"]{
        ...
      } 
5.6.4 属性选择符选择以数值为开头的ID & class
  • H5之前,以数字开头的ID & class是无效的
  • H5之后允许了,但是ID中不能有空格
  • 但css不允许使用以数值开头的选择符
  • 用属性选择符可以绕开限制
    • [id="10"]{}

5.7 CSS3 结构化伪类

5.7.1 last-child
  • CSS2.1中有匹配第一子项的伪类:div:first-child {}
  • CSS3新添了匹配最后一个子项的伪类:div:last-child {}
  • 还有专门针对只有一项的选择符 :only-child
    • p:only-child{...}
    • 将样式应用于只有一个p元素的父元素
    • Internet Explorer 不支持
5.7.2 nth-child
  • 选择奇数个
    • :nth-child(odd) {}
  • 选择偶数个
    • :nth-child(even) {}
5.7.3 理解nth
  • CSS3 提供了一下几个基于nth的规则:
    • nth-child(n)
    • nth-last-child(n)
    • nth-of-type(n)
    • nth-last-of-type(n)
  • 以上n有两种形式
    • 传入整数
      • nth-child(2) 会选择第二项
    • 传入表达式
      • nth-child(2n+3) 会从第3项开始,然后每2个选1个
      • nth-child(3n-2) 会从倒数第2项开始,然后每3个选1个
      • nth-child(-2n-3) 先找到第三个的位置,向反方向每2个选1个
  • n默认是1
  • 区分标记类型的选择符
    • nth-of-type(n)
    • nth-last-of-type(n)
  • .nav:nth-of-type(-2n+3) {...}
    • 先找到类名为nav的元素集合的第三个位置,看tag为哪种,然后选择目标就都是这种tag,反方向每2个选1个
  • CSS中的索引不是从0开始,而是从1开始
5.7.4 nth与响应式开发的关联
  • 基于nth的伪类选择符可以链式使用
    • .nav:nth-child(4n+1):nth-last-child(-n+4) {} 每4个选1个, 但仅限于最后4项
5.7.5 :not
  • :not 为取反的选择符,即“非。。。”
    • div:not(.list) {} 给所有不是list类的div添加样式
5.7.6 :empty
  • 如果有一个元素只添加了内边距,但会在将来某个时刻动态插入或隐藏
  • 可以用:empty来控制这个元素如果内容为空时,改变一些样式
    • div .thing:empty { display: none;}
  • 注意事项
    • 空格不算空
    • 注释会算空
5.7.8 :first-line
  • 这个伪类选择的第一行内容会根据视口大小不同而不同
    • p::first-line{color: red;}

5.8 CSS自定义属性和变量

  • :root伪类可以把自定义的属性保存在文档根元素上,调用的时候用var
    • 首先:
      • :root{ --FontSize: 16px; }
    • 然后调用
      • .main{ font-size: var(FontSize);}

5.9 计算属性 calc

  • .thing{ width: calc(50% - 10px); }
  • 加减乘除都没问题
  • 除了安卓4.3及以下版本中的chrome,其他浏览器都支持

5.10 Web 排版

5.10.1 @font-face
  • 一种字体为了兼容多个浏览器,会有多个格式的版本
  • @font-face是为了应用在线字体显示文本
5.10.2 运用
  • 浏览器依次尝试属性列表中的样式,忽略不能识别的内容
    • 属性值越靠下,优先级越高
5.10.3 缺点
  • 使用@font-face后 ,文件大小是个问题
  • 字体大小会影响网站性能

5.12 CSS3 中的透明度新特性 (略)

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

推荐阅读更多精彩内容