CSS拓展学习笔记

1.flex布局

弹性盒子内容组成

任何一个容器都可以指定为 Flex 布局

.box{
  display: flex;
}

行内元素也可以使用 Flex 布局

.box{
  display: inline-flex;
}

Webkit 内核的浏览器,必须加上-webkit前缀

.box{
  display: -webkit-flex; /* Safari */
  display: flex;
}

设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。

结构图

在这里插入图片描述

采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。

项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size

交叉轴的开始位置叫做cross start,结束位置叫做cross end

容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)

主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end

常用属性

父元素(容器)

  1. flex-direction 属性

属性决定主轴的方向(即项目的排列方向)。

属性值

row(默认值):主轴为水平方向,起点在左端。



row-reverse:主轴为水平方向,起点在右端



column:主轴为垂直方向,起点在上沿



column-reverse:主轴为垂直方向,起点在下沿
  1. flex-wrap属性

默认情况下,项目都排在一条线(又称"轴线")上。flex-wrap属性定义,如果一条轴线排不下,如何换行。

属性值

nowrap(默认):不换行。



wrap:换行,第一行在上方。



wrap-reverse:换行,第一行在下方。
  1. flex-flow属性

flex-flow属性是flex-direction属性和flex-wrap属性的简写形式

默认值为row nowrap

justify-content属性

定义了项目在主轴上的对齐方式。

属性值

flex-start(默认值):左对齐



flex-end:右对齐



center: 居中
  1. align-items属性

设置弹性盒子元素在侧轴(纵轴)方向上的对齐方式。

属性值

stretch

默认值。元素被拉伸以适应容器(父元素高度100%)



自身没有设置高height值

center

元素位于容器的中心



flex-start

元素位于容器的开头



flex-end

元素位于容器的结尾



space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。



space-between:两端对齐,项目之间的间隔都相等。
  1. align-items属性

定义项目在交叉轴上如何对齐。

属性值

flex-start:交叉轴的起点对齐。



flex-end:交叉轴的终点对齐



center:交叉轴的中点对齐



baseline: 项目的第一行文字的基线对齐

tretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度

  1. align-content属性

定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

属性值

flex-start:与交叉轴的起点对齐。



flex-end:与交叉轴的终点对齐。



center:与交叉轴的中点对齐。



space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。



space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。



stretch(默认值):轴线占满整个交叉轴。(height: auto时有效)

子元素

  1. order属性(排序)

定义项目的排列顺序。数值越小,排列越靠前,默认为0。

  1. flex属性

设置弹性盒子的子元素如何分配空间。

flex:6; /* 占6份*/

flex:0 25%

结合父元素的flex-wrap属性进行响应式分配

  1. margin属性(对齐)

设置"margin:auto"值,使得弹性子元素在两上轴方向上完全居中

参考资料

http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

http://www.ruanyifeng.com/blog/2015/07/flex-examples.html

less常用语法

变量

变量允许我们单独定义一系列通用的样式,然后在需要的时候去调用。所以在做全局样式调整的时候我们可能只需要修改几行代码就可以了。

案例:

 // LESS
@color: #4D926F;
#header {
  color: @color;
}
h2 {
  color: @color;
}

/* 生成的 CSS */
#header {
  color: #4D926F;
}
h2 {
  color: #4D926F;
}

混合

混合可以将一个定义好的class A轻松的引入到另一个class B中,从而简单实现class B继承class A中的所有属性。我们还可以带参数地调用,就像使用函数一样。

案例

// LESS
.rounded-corners (@radius: 5px) {
  border-radius: @radius;
  -webkit-border-radius: @radius;
  -moz-border-radius: @radius;
}
#header {
  .rounded-corners;
}
#footer {
  .rounded-corners(10px);
}

/* 生成的 CSS */
#header {
  border-radius: 5px;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
}
#footer {
  border-radius: 10px;
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;
}

嵌套规则

我们可以在一个选择器中嵌套另一个选择器来实现继承,这样很大程度减少了代码量,并且代码看起来更加的清晰。

案例

// LESS
#header {
  h1 {
    font-size: 26px;
    font-weight: bold;
  }
  p { font-size: 12px;
    a { text-decoration: none;
      &:hover { border-width: 1px }
    }
  }
}

/* 生成的 CSS */
#header h1 {
  font-size: 26px;
  font-weight: bold;
}
#header p {
  font-size: 12px;
}
#header p a {
  text-decoration: none;
}
#header p a:hover {
  border-width: 1px;
}

函数 & 运算

运算提供了加,减,乘,除操作;我们可以做属性值和颜色的运算,这样就可以实现属性值之间的复杂关系。LESS中的函数一一映射了JavaScript代码,如果你愿意的话可以操作属性值。

案例

// LESS
@the-border: 1px;
@base-color: #111;
@red:        #842210;
#header {
  color: @base-color * 3;
  border-left: @the-border;
  border-right: @the-border * 2;
}
#footer { 
  color: @base-color + #003300;
  border-color: desaturate(@red, 10%);
}

/* 生成的 CSS */
#header {
  color: #333;
  border-left: 1px;
  border-right: 2px;
}
#footer { 
  color: #114411;
  border-color: #7d2717;
}

3.拓展属性

box-size:border-box

告诉浏览器去理解你设置的边框border和内边距padding的值是包含在width内的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值