day19-day23:多列布局、css的hack、网格布局

多列布局

css3 中最新给出的多列布局方案,他是css布局一个新的扩展

设置列宽
column-width:具体值/auto
具体值是直接设置元素的宽宽度
auto是 根据页面宽度自定义列宽
设置列数
column-count:num
num是具体的正整数,范围是[1,10]

以上两个属性合写
column:width count;
设置列间距
column-gap:normal 或者具体的数值
normal是默认值,他的大小是1em
设置两列之间的边框
column-rule 具体设置规则和css中的border一致

设置标题跨列
column-span
只具有两个值
1.none表示不跨列
2.all表示跨所有列

/* 分列的宽度 */
            column-width: 200px;
            /* 分列的列数 */
            column-count: 3;
            /* 合写 */
            columns: 180px 3;
            /* 设置列间距 */
            column-gap: 20px;
            /* 设置两列之间的边框 */
            column-rule: 10px #f00 dashed;

css的hack

css hack:由于不同的浏览器厂商,比如ie,火狐,谷歌,safari(苹果),他们在生产浏览器的时候,会有不同的解决方案,还有不同版本浏览器也可能对相同的css设置渲染出不同的效果,例如 IE6 7 8 9。 css hack是浏览器厂商给自己的浏览器专门制定的一套特殊的指令。可以理解为css hack的目的就是解决不同浏览器的兼容问题,当然也可以使用css hack 为不同的浏览器指定不同的css

    ie的条件注释
    [if IE]:只要是IE都生效
    [if lte IE 6]:浏览器版本小于等于IE6的时候生效
    [if lt IE 6]:浏览器版本小于IE6的时候生效
    [if gte IE 6]:浏览器版本大于等于IE6的时候生效
    [if gt IE 6]:浏览器版本大于IE6的时候生效
    [endif]条件注释的结束指令
    [if ! IE 6]:浏览器的版本不是ie6的时候生效


    特殊符号的hack
    * 在ie10及其以上生效
    - 只对ie6生效
    + 对ie7生效
    _下划线,对ie6 ie7生效
    \9 对ie6 7 8 9 10都生效
    \0 对ie8 9 10都生效
    \9\0 只对ie9 10生效

网格布局

网格布局,是css3新出的一种布局方式,常见的适用案例为九宫格布局

声明网格布局的环境
display:grid;(最常用)
display:inline-grid;

设置列
grid-template-columns
值是 fr,1fr就代表一个比例划分
有几列就可以设置几个fr,每一个fr所占据的宽度比例为1fr。如果需要设置其他比例的宽的,则可以设置整倍fr
如下例:
grid-template-columns:1fr 2fr 3fr;
设置了当前网格为3列,第一列的宽的为1fr,第二列的宽的是第一列的二倍,第三列的宽度是第一列的三倍
有几个fr值,就有几列

还可以设置具体宽度
grid-template-columns:100px 100px 200px
还可以设置 宽度+auto auto是除了具体宽度列数之外的自适应宽度

也可以 宽度+fr组合

设置行
grid-template-rows

它的值是行高,有几个值,就设置几个行高
grid-template-rows:100px 200px 300px;
以上案例的含义是,设置了三行,第一行行高是100px,第二行行高是200px,第三行行高是300px
如果总行高小于父元素grid的高,则父级剩余的高度会被剩余的子元素平分

== 行 列 合写
grid-template:行 /列==

grid-template:auto auto auto/1fr 1fr 1fr;

设置列间距
grid-column-gap:具体数值
设置行间距
grid-row-gap:具体数值
合写间距
gap:row column;

指定开始行
grid-row-start:1; 从第一行开始跨行
指定结束行
grid-row-end:span 3; 到第三行结束,合并3行

指定开始列
grid-column-start:1; 从第一列开始跨列
指定结束行
grid-column-end:span 3; 到第三列结束,合并3列

sass简介

sass是css的预编译语言

sass的写法
简单写法和css是一样的
less 的写法
通过换行符和空格来表达层级关系

css写法
div{border:1px #f00 solid;}
div p{font-size:20px;}
sass 写法
div {
border:1px #f00 solid;
p{
font-size:20px;
}
}
less 写法
div
border:1px #f00 solid;
p
font-size:20px;

Sass 是一款强化 CSS 的辅助工具,它在 CSS 语法的基础上增加了变量 (variables)、嵌套 (nested rules)、混合 (mixins)、导入 (inline imports) 等高级功能,这些拓展令 CSS 更加强大与优雅。使用 Sass 以及 Sass 的样式库(如 Compass)有助于更好地组织管理样式文件,以及更高效地开发项目。

使用sass,可以使用两种语法格式,语法格式不同,文件的后缀名不同,具有scss和sass两种不同的后缀名
scss:支持css3语法格式,所有的css3语法都通用
sass:被称为缩进格式 (Indented Sass) 通常简称 “Sass”,是一种简化格式。它使用 “缩进” 代替 “花括号” 表示属性属于某个选择器,用 “换行” 代替 “分号” 分隔属性。

sass的变量

在vscode中安装 插件
easy sass
easy less
主要使用的是easy sass,通过插件编译后的结果是会自动生成一个css文件和一个min.css压缩文件

声明变量
        通过关键字($)作为声明变量,$name 此时name就是变量名
        变量名的命名方式:
            以数字,字母,下划线_、短横线-组合的字符作为变量名
            注意,只能以字母和下划线_开头

   通过 #{$name} 插值语句可以在选择器或属性名中使用变量
        直接在属性中使用变量,sass会报错
        如  margin-$left:10px; 报错
            margin-#{$left}:10px;正确写法

全局作用域和局部作用域
全局作用域范围值整个sass文件,局部作用域范围是某个选择器内部

全局变量和局部变量
全局变量:声明在全局作用域内的变量,可以在任何地方使用该变量
局部变量:声明在局部作用域内的变量,只能在生命的地方使用

sass的嵌套规则

sass的嵌套规则
.wp{
background:#f60;
h1{color:#333;}
p{color:#333;}
}
以上嵌套规则最终会被编译为后代选择器的形式 ,因此嵌套不宜过深

属性嵌套:凡是可以进行拆分的属性都可以使用属性嵌套,注意属性名后面的冒号(:)要和{} 有空格分开
border: {
width: 2px;
style: solid;
color: #f00;
}

父选择器的标识符 &,&表示当前的父选择器

混合器

混合器的作用:把相同的css样式提取出来,单独设置成一个模块,使用方便

使用混合器 @mixin
语法@mixin name{
css 样式代码
}
其中name就是混合器的名字,他是一个变量,命名规则同变量的命名规则

使用混合器
@include name;通过@include把混合器的名字引入到使用混合器的位置

复杂的混合器
混合器也可以接受参数

1.定义混合器
@mixin name(arg1,arg2,arg3…){
ss 样式代码
}
()中的arg列表就是混合器参数,由于他们只是形式上的参数,不具备任何意思,因此成为形参列表
注意参数的本质也是变量,因此需要$开头

2.使用混合器
@include name(val1,val2,val3…)
val列表是实际的数据,因此成为实参列表

形参和实参是一一对应的关系

特殊字符
 空格
        > 大于号
        < 小于号
        © 版权符号
        " 双引号
        ' 单引号
        × ×号
        ™ 商标

BFC

BFC 块级格式化上下文,BFC规定了在当前元素中块元素的布局方式,默认只有一个标签body是块级上下文标签

BFC特点
1.BFC是一个独立的布局环境,BFC内部的布局和外部不会相互影响
2.可以通过一些方法触发BFC,完成一个独立的布局环境

BFC的布局规则
1.BFC内部块元素,会从上到下一个一个的垂直排列
2.BFC规定了 两个相邻的块元素他们的上下margin重合,
3.每一个元素的margin盒模型的左边(margin-left),与包含他的父border 盒模型的左边(border-left)相接触
4.每一个BFC区域不会和浮动的元素重叠
5.每一个BFC区域都是独立的,里面的内容和外面的内容相互不影响

创建一个BFC的方法
1.给元素添加overflow,注意它的值visible除外
2.给元素设置浮动,注意浮动值 none除外
3.给元素设置position,他的值是fixed或者absolute
4.给元素设置display,他的值为flex,inline-flex table-cell inline-block

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值