CSS的一些零碎总结

1、CSS 伪元素用于向某些选择器设置特殊效果(用来当作一个东西的,跟一个元素差不多,但不是元素)。

① :frist-line伪元素:用于向文本首行设置特殊样式,但是只能用于块级元素。

以下属性可应用于 “ frist-line ” 伪元素:
        font、color、background、word-spacing、letter-spacing、text-decoration、vertical-align、text-transform、line-height、clear 。

② :first-letter伪元素:用于向文本首字母设置特殊样式,只能用于块级元素。

以下属性可应用于 “ first-letter ” 伪元素:
        font、color、background、margin、padding、border、text-decoration、vertical-align(仅当float为none时)、text-transform、line-height、float、clear 。

③ 伪元素和css类可以配合使用:p.article: first-letter { },可以使所有 class 为 article 的段落的首字母样式改变 。

④ 多重伪元素:可以结合多个伪元素来使用。p: first-letter { },p: first-line { }:段落的第一个字母根据p: first-letter具体样式显示,第一行其余文本根据p: first-line具体样式显示,段落中其余文本以具体段落设置的其他样式显示。

⑤ :before伪元素:可以在元素内容前面插入新内容 。

⑥ :after伪元素:可以在元素的内容之后插入新内容 。

⑦ 许多人喜欢给 blockquote 引用段添加巨大的引号作为背景,这种时候我们就可以用 :before 来代替 background 了,既可以给背景留下空间,还可以直接使用文字而非图片:

    blockquote::before { content: open-quote; position: absolute; z-index: -1; color: #DDD; font-size: 120px; font-family: serif; font-weight: bolder; }

⑧ 清除浮动:

.clear-fix { *overflow: hidden; *zoom: 1; } .clear-fix:after { display: table; content: ""; width: 0; clear: both; }




2、CSS 伪类用于向某些选择器添加特殊的效果(用来选择的)

① :active:向被激活的元素添加样式

② :focus:向拥有键盘输入焦点的元素添加样式

③ :hover:当鼠标悬浮在元素上方时,向元素添加样式

④ :link:向未被访问的链接添加样式

⑤ :visiter:向已被访问的链接添加样式

⑥ :first-child:向元素的第一个子元素添加样式

⑦ :lang:向带有指定lang属性的元素添加样式,使你有能力为不同的语言定义特殊的规则:

q:lang(no){ quotes: "~" "~" } 
<p>文字<q lang="no">段落中的引用的文字</q>文字</p>




3、解决塌陷,清除浮动

① 添加空元素

        经典的解决方法,就是在浮动元素下方添加一个非浮动元素。
代码这样写:

<div>
<div style="float:left;width:45%;"></div> <div style="float:right;width:45%;"></div> <div style="clear:both;"></div> </div>

        原理是父容器现在必须考虑非浮动子元素的位置,而后者肯定出现在浮动元素下方,所以显示出来,父容器就把所有子元素都包括进去了。这种方法比较简单,但是要在页面中增加冗余标签,违背了语义网的原则。

② 浮动的父容器

        另一种思路是,索性将父容器也改成浮动定位,这样它就可以带着子元素一起浮动了。

<div style="float:left;"> <div style="float:left;width:45%;"></div> <div style="float:right;width:45%;"></div> </div>

        这种方法不用修改HTML代码,但是缺点在于父容器变成浮动以后,会影响到后面元素的定位,而且有时候,父容器是定位死的,无法变成浮动。
③ 浮动元素的自动clearing
让父容器变得可以自动"清理"(clearing)子元素的浮动,从而能够识别出浮动子元素的位置,不会出现显示上的差错。
要做到这点,只要为父容器加上一条"overflow: hidden"的CSS语句就行了。代码这样写:

<div style="overflow: hidden;"> <div style="float:left;width:45%;"></div> <div style="float:right;width:45%;"></div> </div>

        这种方法的缺点主要有二个,一个是IE 6不支持,另一个是一旦子元素的大小超过父容器的大小,就会出显示问题。

④ 通过CSS语句添加子元素呢,这样就不用修改HTML代码

.clearfix:after { content: "\0020"; display: block; height: 0; clear: both; } .clearfix { zoom: 1; }

        "clearfix"是父容器的class名称,"content:"020";"是在父容器的结尾处放一个空白字符,"height: 0;"是让这个这个空白字符不显示出来,"display: block; clear: both;"是确保这个空白字符是非浮动的独立区块。添加一条IE 6的独有命令"zoom:1;"就行了,这条命令的作用是激活父元素的"hasLayout"属性,让父元素拥有自己的布局。IE 6会读取这条命令,其他浏览器则会直接忽略它。




4、什么情况下hidden不起作用

        position设置成fixed,overflow的hidden不起作用。




5、css盒子模型,问的是border、padding、margin三个属性如何作用在一个块级元素上?

        一个盒子的宽度 = border + padding + width(content内容的宽度)。

        我想给一个给一个盒子加一个宽度,然后再加一个padding,但是这个盒子原本的宽度不改变,也就是说,width的值没有改变,且不会因为加了padding而往外扩增,该如何做?
有两种方式:

① 当一个块元素没有设置width时,这个盒子的宽度是默认填充父元素的宽度,这时随便给这个块元素加padding都是向内扩展的,不会向外扩展。

② border-sizing: content-box / border-box / inherit ;

content-box:宽度和高度分别应用到元素的内容框,在宽度和高度之外绘制元素的内边距和边框。

border-box:为元素设定的宽度和高度决定了元素的边框盒,就是说,用border的宽度来指代width,把加上border、padding之后的宽度,用width强行给限制住,然后宽度也就会变成向内扩展。

inherit:规定应从父元素继承 box-sizing 属性的值。




6、关于字体的,说一下rem这个单位(移动端),(产生和设置)

em是相对于父元素的font-size,rem是相对于根元素的font-size。

rem的补充:

① 对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小;

② IE9/IE10在用于伪元素时或者使用字体简写声明时不支持rem;

③ IOS Safari5.0-5.1虽然支持rem,但是在使用媒体查询时不支持rem。




7、如何在css代码里提升代码的优先级?
a { color:red;} 用什么方法覆盖掉? 解决:

① body a { color:red;}
优先级计算公式:标签=1,id=100,class=10,加起来就是他的优先级。

② 在color后面加一个!important,强行将优先级提升到最大。

③ !important提升指定样式规则的应用优先权。

8、有两个CSS语句能起到隐藏节点的作用visibility和display

(1)visibility

        规定了元素是否可见,即使不可见也会占用上面的空间,在这里就是在指它与display的不一样了。

(2)display

        这个属性用于定义建立布局时元素生成的显示框类型。对于 HTML 等文档类型,如果使用 display 不谨慎会很危险,因为可能违反 HTML 中已经定义的显示层次结构。对于 XML,由于 XML 没有内置的这种层次结构,所有 display 是绝对必要的。

(3)对比:

相同点:都有相同的功能就是隐藏。

不同点:当我们定义了display后,在渲染树中不会引擎是不会去构建这个框的。而visibility当我们使它隐藏的时候,他在渲染树中会构建,只是不去渲染。这也就是W3c上面所说的不可见会占空间的原因。他们两者在优化中visibility会显得更好,因为我们不会因为它而去改变了文档中已经定义好的显示层次结构了。

[转载自http://www.cnblogs.com/xsilence/p/6050412.html]

转载于:https://www.cnblogs.com/gw1016/p/6050459.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有源代码的iphone项目

2019独角兽企业重金招聘Python工程师标准>>> http://blog.joomla.org.tw/iphone-ipad/104-iphone.html 學習和利用現成的資源是很重要的&#xff0c;以下列出有原始碼可下載的iPhone/iPod程式&#xff0c;這邊收集的是以已經放到App Store上的程式為主&#xff0c;…

匿名函数与闭包

<!DOCTYPE html><html lang"zh-CN"><head> <meta charset"UTF-8"> <title>闭包.html</title> <style> </style> <script src"jquery-1.7.2.min.js"></script> <script type&quo…

Content Security Policy 入门教程

From: http://www.ruanyifeng.com/blog/2016/09/csp.html 跨域脚本攻击 XSS 是最常见、危害最大的网页安全漏洞。 为了防止它们&#xff0c;要采取很多编程措施&#xff0c;非常麻烦。很多人提出&#xff0c;能不能根本上解决问题&#xff0c;浏览器自动禁止外部注入恶意脚本&…

windows编程基础

说明&#xff1a;只供学习交流&#xff0c;转载请注明出处 windows编程基础 &#xff08;1&#xff09;&#xff1a;API与SDK 我们在编写标准C程序的时候&#xff0c;经常会调用各种库函数来辅助完成某些功能&#xff1a;初学者使用得最多的库函数就是printf了&#xff0c;这些…

前端安全配置之Content-Security-Policy(csp)

From: https://www.cnblogs.com/heyuqing/p/6215761.html 什么是CSP CSP全称Content Security Policy ,可以直接翻译为内容安全策略,说白了,就是为了页面内容安全而制定的一系列防护策略. 通过CSP所约束的的规责指定可信的内容来源&#xff08;这里的内容可以指脚本、图片、i…

springboot跨域配置

From: https://www.cnblogs.com/nananana/p/8492185.html 前言&#xff1a; 当它请求的一个资源是从一个与它本身提供的第一个资源的不同的域名时&#xff0c;一个资源会发起一个跨域HTTP请求(Cross-site HTTP request)。 比如说&#xff0c;域名A ( http://domaina.example …

字符函数

getchar: 从stdio流中读字符 a getchar(); fputs:指定的文件写入一个字符串(不自动写入字符串结束标记符\0) fgets:从文件结构体指针stream中读取数据&#xff0c;每次读取一行。读取的数据保存在buf指向的字符数组中&#xff0c;每次最多读取 bufsize-1个字符…

SpringBoot配置Cors解决跨域请求问题

From: https://www.cnblogs.com/yuansc/p/9076604.html 一、同源策略简介 同源策略[same origin policy]是浏览器的一个安全功能&#xff0c;不同源的客户端脚本在没有明确授权的情况下&#xff0c;不能读写对方资源。 同源策略是浏览器安全的基石。 什么是源 源[origin]就…

Server Develop (三) 多进程实现C/S

多进程实现C/S 把上次的多进程简单的添加一个fork就可以实现一个简单的多进程服务器。具体进程创建和使用的函数&#xff0c;有时间得总结一下了&#xff5e;&#xff5e;&#xff5e;&#xff5e; if(fork()0){char buffer[1024];strcpy(buffer, "this is server! welcom…

l2正则化

在机器学习中&#xff0c;无论是分类还是回归&#xff0c;都可能存在由于特征过多而导致的过拟合问题。当然解决的办法有 &#xff08;1&#xff09;减少特征&#xff0c;留取最重要的特征。 &#xff08;2&#xff09;惩罚不重要的特征的权重。 但是通常情况下&#xff0c;我们…

机房收费系统的合作版

概述 机房收费系统的合作版自己负责的是B层和Facade层&#xff0c;在做这块的时候有很多的感触&#xff1a;动态SQL语句&#xff1b;设计模式&#xff1b;合作开发应该注意的点。其中动态SQL语句的理解已经在上一篇博客中写了&#xff0c;如果你有意向的话&#xff0c;可以看一…

ajax跨域,这应该是最全的解决方案了

From: https://segmentfault.com/a/1190000012469713 前言 从刚接触前端开发起&#xff0c;跨域这个词就一直以很高的频率在身边重复出现&#xff0c;一直到现在&#xff0c;已经调试过N个跨域相关的问题了&#xff0c;16年时也整理过一篇相关文章&#xff0c;但是感觉还是差…

centos 7.0防火墙导致vagrant端口映射失败

在vagrant上部署了centos7.0后&#xff0c;Vagrantfile端口转发设置后&#xff0c;宿主机访问客户机站点还是无法访问&#xff0c;问题出在:centos7.0以上版本默认会安装firewalld防火墙, firewalld有区(zone)概念,默认在public区,public:指定外部链接可以进入 先查看下当前端口…

如何导入ShareSDK的sample

由于项目需要&#xff0c;最近需要做10几个平台的分享&#xff0c;如果自己去集成&#xff0c;浪费很多时间&#xff0c;而且还很难成功。最后发现Sharesdk,可以满足项目需求。 首先&#xff0c;需要到他们的官网http://sharesdk.cn/下载android版本的SDK。 然后玩了一下他们的…

Spring Boot配置跨域访问策略

From: https://blog.csdn.net/garyond/article/details/80192760 1. 引言 我们在开发过程中通常因为不同应用之间的接口调用或者应用之间接口集成时经常会遇到跨域问题&#xff0c; 导致无法正常获取接口数据&#xff0c;那么什么是跨域&#xff1f; 跨域的解决办法是什么&am…

SPOJ 220 Relevant Phrases of Annihilation(后缀数组+二分答案)

【题目链接】 http://www.spoj.pl/problems/PHRASES/ 【题目大意】 求在每个字符串中出现至少两次的最长的子串 【题解】 注意到这么几个关键点&#xff1a;最长&#xff0c;至少两次&#xff0c;每个字符串。   首先对于最长这个条件&#xff0c;我们可以想到二分答案&…

EF5.x Code First 一对多关联条件查询,Contains,Any,All

背景 通过多个部门id获取所有用户&#xff0c;部门和用户是多对多。 已知部门id&#xff0c;获取该部门包括该部门下的所有子部门的所有用户。 关系如下&#xff1a; public class Entity:IEntity{public Guid Id { get; set; }public string CreateUser { get; set; }public D…

Spring5:@Autowired注解、@Resource注解和@Service注解

From: https://www.cnblogs.com/szlbm/p/5512931.html 什么是注解 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop、事物&#xff0c;这么做有两个缺点&#xff1a; 1、如果所有的内容都配置在.xml文件中&#xff0c;那么.xml文件将会十分庞大&#xff1b;如…

C#通过SSH连接MySql

出于安全考虑&#xff0c;有的时候数据库服务器只能通过SSH访问&#xff0c;比如MySql服务装在了服务器A上&#xff0c;并且A机器只允许B机器才能访问&#xff0c;而部署环境可能在C机器上&#xff0c;这时候就要C服务器通过B服务器连接A服务器&#xff0c;这时候就需要用到SSH…

CCNA实验(8) -- PPP HDLC

HDLC帧格式与以太帧格式有很大差别&#xff0c;HDLC帧没有源MAC和目的MAC地址。HDLC不能提供验证&#xff0c;缺少对链路保护。Cisco设备与Cisco设备连接&#xff0c;可用HDLC封装。Cisco设备与非Cisco设备连接&#xff0c;应使用PPP协议。PPP经过4个过程在点到点链路上建立连接…