不做CSS小白-从零碎CSS开始

239 阅读4分钟

一、开发中用到的零碎CSS知识点

1.position: 定位

static(静态定位) relative(相对定位) flex(固定定位)absolute(绝对定位)

static:块级元素只能上下定位 行级元素只能左右定位

四种定位中 静态定位在最下层(会保留原始位置 相当于visibility:hidden )

relative:相对其静态定位进行平移 (按照 top left right bottom)

.relative{
    backgroud:red;
    position:relative;
    top:10px;//只有设置完定位才可以生效
    right:-10px;
    z-index:0 //可以设置图片重叠的层次
}

flex:相对于 浏览器左上角 (不会保留 原始位置 相当于 display:none )

absolute:相对于 找到的第一个非静态定位的父标签的位置 如未找到则相对于html的左上角(不会保留 原始位置 相当于 display:none )

3.CSS组合选择符

div p后代选择器:后代选择器用于选取某元素的后代元素。

div>p子元素选择器:与后代选择器相比,子元素选择器(Child selectors)只能选择作为某元素子元素的元素

div+p相邻兄弟选择器:相邻兄弟选择器(Adjacent sibling selector)可选择紧接在另一元素后的元素,且二者有相同父元素。如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻兄弟选择器(Adjacent sibling selector)。

div~p后续兄弟选择器:后续兄弟选择器选取所有指定元素之后的相邻兄弟元素。

4.命名空间规范

1.布局:以 g 为命名空间,例如:.g-wrap 、.g-header、.g-content。
2.状态:以 s 为命名空间,表示动态的、具有交互性质的状态,例如:.s-current、s-selected。
3.工具:以 u 为命名空间,表示不耦合业务逻辑的、可复用的的工具,例如:u-clearfix、u-ellipsis。
4.组件:以 m 为命名空间,表示可复用、移植的组件模块,例如:m-slider、m-dropMenu。
5.钩子:以 j 为命名空间,表示特定给 JavaScript 调用的类名,例如:j-request、j-open

5.CSS书写顺序

1.位置属性(position, top, right, z-index, display, float等)
2.大小(width, height, padding, margin)
3.文字系列(font, line-height, letter-spacing, color- text-align等)
4.背景(background, border等)
5.其他(animation, transition等)

6.HTML5部分新特性和CSS3部分新特性

6.1新的语义和结构元素
语义元素无实际的效果,但是可以方便结构的理解
如 headerarticlenavfooter等
<header>表明这是一个标题,一个网页可以有多个header</header>
<nav>表明这是一个导航栏</nav>
6.2 表单元素 datalist元素
<input list="browsers">
<datalist id="browsers">
  <option value="Internet Explorer">
  <option value="Firefox">
  <option value="Chrome">
  <option value="Opera">
  <option value="Safari">
</datalist>
6.3 resize、box-sizing、outline-offset
/*resize属性指定一个元素是否应该由用户去调整大小,这个 div 元素由用户调整大小*/
div
{
    resize:both;
    overflow:auto;
}
/*CSS3 box-sizing 属性在一个元素的 width 和 height 中包含 padding(内边距) 和 border(边框)。
如果在元素上设置了 box-sizing: border-box; 则 padding(内边距) 和 border(边框) 也包含在 width 和 height 中:*/
/*推荐写法*/
* {
    box-sizing: border-box;
}
.div1 {
    width: 300px;
    height: 100px;
    border: 1px solid blue;
    box-sizing: border-box;
}
/*outline-offset 属性对轮廓进行偏移,并在超出边框边缘的位置绘制轮廓。
轮廓与边框有两点不同:
轮廓不占用空间
轮廓可能是非矩形*/
div
{
    border:2px solid black;
    outline:2px solid red;
    outline-offset:15px;
}

7.内联标签、块级标签

行内标签:a b img em br i span input select
块级标签:div p h1-h6 form ul dl ol table

8.动画transition和animate

transition:all 0.3s linear 0; 所有元素 0.3秒 平均速度 0秒延迟
transition-property 指定CSS属性的name,transition效果
transition-duration transition效果需要指定多少秒或毫秒才能完成
transition-timing-function  指定transition效果的转速曲线
transition-delay    定义transition效果开始的时候
​
$('.nav-btn').animate({left:'220px'},500,'linear'); 选择class修改class的left属性

9.开发中遇到的问题

9.1让子标签内容占据父标签的全部空间和通过点击实现切换样式

//子标签占满父标签
.aa{
    display: block;
    margin: 0;
    height: 40px;
    }
.checkbox-show{
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 7.5px 0;
    }
//点击切换状态
.checkbox0 input:checked + label{
    font-size: 16px;
    font-weight: bold;
    font-family: MicrosoftYaHei;
}
.checkbox-hide{
    display: none;
}
<div class="checkbox0 aa">
    <input type="checkbox" id="1-1" class="checkbox-hide">
    <label class="checkbox-show" for="1-1">否</label>
</div>

9.2 伪类(:)和伪元素(::)

<q>一些引用</q>, 他说, <q>比没有好。</q>.
CSS:
q::before { 
  content: "«";
  color: blue;
}
q::after { 
  content: "»";
  color: red;
}
//结果
«一些引用», 他说, «比没有好。».

9.3 文本域超出显示省略号

  • 单行
div{
    width:100px;
    text-overflow : ellipsis;
    white-space:nowrap;
    overflow: hidden;
}
  • 多行
.mult_line_ellipsis{
  width:130px; 
  text-overflow:ellipsis;//文本溢出显示省略号
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 3;//最多几行
  -webkit-box-orient: vertical;
  
}
/*问题:在某些webpack打包的项目下会出现-webkit-box-orient: vertical;样式应用不上情况
原因:该样式被autoprefixer插件过滤掉了*/
.mult_line_ellipsis{//多行文本溢出
  overflow: hidden;
  text-overflow:ellipsis;//文本溢出显示省略号
  display: -webkit-box;
  -webkit-line-clamp: 3;
/*autoprefixer: off*/
  -webkit-box-orient: vertical;
/*autoprefixer: on*/
  width:130px;
}

\