博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

css其他

Posted on 2024-01-28 11:26  linFen  阅读(1)  评论(0编辑  收藏  举报

1、    css水平、垂直居中

水平居中

1)      行内元素: text-align: center
2)      块级元素: margin: 0 auto
3)      position:absolute +left:50%+ transform:translateX(-50%)
4)      display:flex  justify-content: center

垂直居中

1)      设置line-height 等于height
2)      position:absolute +top:50%+ transform:translateY(-50%)
3)      display:flex   align-items: center
4)      display:table  display:table-cell  vertical-align: middle;

 

2、    CSS 选择符

1.id选择器( # myid)
2.类选择器(.myclassname)
3.标签选择器(div, h1, p)
4.相邻选择器(h1 + p)
5.子选择器(ul > li)
6.后代选择器(li a)
7.通配符选择器( * )
8.属性选择器(a[rel = "external"])
9.伪类选择器(a: hover, li:nth-child)

 

3、    CSS3新特性

  • CSS3实现圆角(border-radius),阴影(box-shadow),
    对文字加特效(text-shadow),线性渐变(gradient),
  • transform属性允许我们对元素进行旋转、缩放、移动或倾斜
    rotate(9deg) //旋转
    scale(0.85,0.90)// 缩放
    translate(0px,-30px) //移动
    skew(-9deg,0deg)//倾斜
  • 增加了更多的CSS选择器 多背景 rgba
  • 伪元素是::selection. 选择器匹配元素中被用户选中或处于高亮状态的部分。
  • 媒体查询,多栏布局
  • border-image
  • animation动画

 

4、    初始化CSS样式

因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异。
当然,初始化样式会对SEO有一定的影响。
*不建议的方式: * {padding: 0; margin: 0;}。建议按照淘宝的方式,一个个写。

 

5、    Flex布局

定义:Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。

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

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

1)      flex-direction:属性决定主轴的方向(即项目的排列方向)

row(默认值):主轴为水平方向,起点在左端。
row-reverse:主轴为水平方向,起点在右端。
column:主轴为垂直方向,起点在上沿。
column-reverse:主轴为垂直方向,起点在下沿。

2)      flex-wrap:如果一条轴线排不下,如何换行

nowrap(默认):不换行
wrap:换行,第一行在上面
wrap-reverse;换行,第一行在下面

3)      flex-flow:属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap

4)      justify-content:属性定义了项目在主轴上的对齐方式。

flex-start(默认值):左对齐
flex-end:右对齐
center: 居中
space-between:两端对齐,项目之间的间隔都相等。
space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

5)      align-items:属性定义项目在交叉轴上如何对齐。

flex-start:交叉轴的起点对齐。
flex-end:交叉轴的终点对齐。
center:交叉轴的中点对齐。
baseline: 项目的第一行文字的基线对齐。
stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

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

复制代码
flex-start:与交叉轴的起点对齐。
flex-end:与交叉轴的终点对齐。
center:与交叉轴的中点对齐。
space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
stretch(默认值):轴线占满整个交叉轴。
复制代码

 项目属性:

复制代码
order:定义项目的排列顺序。数值越小,排列越靠前,默认为0。
flex-grow:属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
flex-shrink:属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
flex-basis:属性定义了在分配多余空间之前,项目占据的主轴空间(main size)
flex:属性是flex-growflex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。
align-self:属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto
复制代码

 

6、   常用css属性

背景:

background-image设置背景图片,通常以图片的链接方式定义值
background-repeat设置背景如何重复平铺,默认情况下会在页面的水平或者垂直方向平铺
background-attachment定义背景图片随滚动轴的移动方式
background-position设置背景图像的起始位置

文本:

复制代码
direction 设置文本方向
letter-spacing 设置字符间距
line-height 设置行高
text-align 对齐元素中的文本
text-decoration 向文本添加修饰(underline下划线)
text-indent 缩进元素中文本的首行
text-shadow 设置文本阴影
text-transform 控制元素中的字母(大小写)
unicode-bidi 设置或返回文本是否被重写
vertical-align 设置元素的垂直对齐
white-space 设置元素中空白的处理方式
word-spacing 设置字间距
复制代码

定位:

Position: absolute; relative; static;定位
visibility: inherit; visible; hidden;可见
overflow: visible; hidden; scroll; auto;滚动条
clip: rect(12px,auto,12px,auto) (裁切)

 

7、   html语义化

1,去掉或者丢失样式的时候能够让页面呈现出清晰的结构
2,有利于SEO:和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;
3,方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;
4,便于团队开发和维护,语义化更具可读性,是下一步吧网页的重要动向,遵循W3C标准的团队都遵循这个标准,可以减少差异化。

 

8、    Cookie

优点:极高的扩展性和可用性
1.通过良好的编程,控制保存在cookie中的session对象的大小。
2.通过加密和安全传输技术(SSL),减少cookie被破解的可能性。
3.只在cookie中存放不敏感数据,即使被盗也不会有重大损失。
4.控制cookie的生命期,使之不会永远有效。偷盗者很可能拿到一个过期的cookie。

缺点:
1.`Cookie`数量和长度的限制。每个domain最多只能有20条cookie,每个cookie长度不能超过4KB,否则会被截掉。
2.安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。即使加密也与事无补,因为拦截者并不需要知道cookie的意义,他只要原样转发cookie就可以达到目的了。
3.有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用。

Cookie主要用在以下三个方面:

1)      会话状态管理(如用户登录状态、购物车、游戏分数和其它需要记录的信息)

2)      个性化设置(如用户自定义设置、主题等)

3)      浏览器行为跟踪(如跟踪分析用户行为)

document.cookie = name + "=" + escape(value) + ";expires=" + date.toUTCString();

setCookie(name, ' ', -1);

 

9、    常见兼容性问题

* png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.也可以引用一段脚本处理.
* 浏览器默认的margin和padding不同。解决方案是加一个全局的*{margin:0;padding:0;}来统一。
* IE6双边距bug:块属性标签float后,又有横行的margin情况下,在ie6显示margin比设置的大。
* 浮动ie产生的双倍距离(IE6双边距问题:在IE6下,如果对元素设置了浮动,同时又设置了margin-left或margin-right,margin值会加倍。)
#box{ float:left; width:10px; margin:0 0 0 100px;}
这种情况之下IE会产生20px的距离,解决方案是在float的标签样式控制中加入 ——_display:inline;将其转化为行内属性。(_这个符号只有ie6会识别)
* 渐进识别的方式,从总体中逐渐排除局部。
首先,巧妙的使用“\9”这一标记,将IE游览器从所有情况中分离出来。
接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。

 

10、 storage和cookie

一:存储空间不同
1、web storage能提供5M的存储空间(不同浏览器不同),cookie提供4k的空间
2、web storage每个域(包括子域)都有独立的存储空间,各个存储空间是完全独立的,因此不会造成数据混淆

二:与服务端交互
1、web storage中的数据仅仅是本地存储,不会和服务器发生任何交互
2、cookie的内容会随着请求一并发送到服务器(每请求一个新的页面时,cookie都会被发送过去,无形中造成带宽浪费)

三:接口:
1、web storage提供了许多丰富易用的接口,拥有setItem,removeItemgetItem,clear,key等方法,操作数据更简单
2、cookie需要自己封装setCookie,getCookie等

 

11、 websocket

       WebScoket是一种让客户端和服务器之间能进行双向实时通信的技术。它是HTML5的一个协议规范,本质上是个基于TCP的协议,它通过HTTP/HTTPS协议发送一条特殊的请求进行握手后创建了一个TCP连接,此后浏览器/客户端和服务器之间便可以通过此连接来进行双向实时通信。方法:ws.onopen、ws.onerror、ws.onmessage、ws.onclose。

 

12、 常用的请求方式

1)      get向特定的路径资源发出请求,数据暴露在url中

2)      post向指定路径资源提交数据进行处理请求,数据包含在请求体中

3)      options返回服务器针对特定资源所支持的http请求方法,允许客户端查看,测试服务器性能

4)      head 向服务器与get请求相一致的响应,响应体不会返回,可以不必传输整个响应内容

5)      put从客户端向服务器端传送的数据取代指定的文档的内容

6)      delete请求服务器删除指定的页面

7)      trace回显服务器收到的请求,主要用于测试或者诊断

8)      connecthttp/1.1协议中预留给能够将连接改为管道方式的代理服务

 

13、 get、post的区别

1.get传参方式是通过地址栏URL传递,是可以直接看到get传递的参数,post传参方式参数URL不可见

2.get传递数据是通过URL进行传递,对传递的数据长度是受到URL大小的限制,URL最大长度是2048个字符。post没有长度限制

3.get后退不会有影响,post后退会重新进行提交

4.get请求可以被缓存,post不可以被缓存

5.get请求只URL编码,post支持多种编码方式

6.get请求的记录会留在历史记录中,post请求不会留在历史记录

7.get只支持ASCII字符,post没有字符类型限制

 

14、 画三角形

复制代码
.shape {
       width: 0;
       height: 0;
       border-left: 50px solid transparent;
       border-right: 50px solid transparent;
       border-top: 50px solid transparent;
       border-bottom: 50px solid blue;
       background: white;
}
复制代码

 

15、CSS优先级顺序

!important > 行内样式>ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认样式

 

16、em和rem

rem

rem是相对于根元素html,这样就意味着,我们只需要在根元素确定一个参考值,可以设计HTML为大小为10px,到时设置1.2rem就是12px,以此类推。

优点是,只需要设置根目录的大小就可以把整个页面的成比例的调好。

em

参考物是父元素的font-size,具有继承的特点。如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值。

特点是1. em的值并不是固定的; 2. em会继承父级元素的字体大小。