100个实用的CSS技巧,以及遇见的问题和解决方案。
前言
本篇文章将会持续更新,我会将我遇见的一些问题,和我看到的实用的CSS技巧记录下来,本篇文章会以图文混排的方式写下去。具体什么时候写完我也不清楚,反正我的目标是写100个。
本案例都是经本人实测,并附加全部案例下载地址。http://pan.baidu.com/s/1geUcAcF
1、背景图片清晰度不够,明明原图很清楚,但是在浏览器看不清楚。
解决方案
#login-main {
width: 100%;
height: 100%;
background: url("../img/login-ba2.jpg") no-repeat center;
background-size: 100% 100%; //加上这句话就行啦。
}
2、img标签怎么居中
讲解:设置父元素为相对定位,子元素绝对定位。然后设置子元素的 top:50% right:50%, 在减去子元素自身的 margin-top,和margin-left。
<div id="tow">
<img src="img/img-100px.jpg" alt="">
</div>
#tow {
width: 200px;
height: 200px;
background-color: blueviolet;
position: relative;
img {
width: 100px;
height: 100px;
position: absolute;
top: 50%;
left: 50%;
margin: -50px 0 0 -50px;
}
}
最终效果
3、背景图怎么实现当屏幕缩小时,自动从左右两侧裁剪。
在写pc端的时候,遇见一些大的banner图一般是1920px,但是又不能写成自适应影响效果,当遇见小屏幕时,右侧会显示不全,我对此问题的解决方案是从左右两侧裁切,让图片始终以中心向两侧展开,能展示多少是多少。溢出部分隐藏。
<div id="three">
<div class="bg-photo "></div>
</div>
#three {
position: relative;
top:;
left:;
width: 100%;
height: 300px;
overflow: hidden; .bg-photo {
position: absolute;
top:;
left:;
width: 100%;
height: 100%;
overflow: hidden;
-webkit-background-size: cover !important;
-moz-background-size: cover !important;
-o-background-size: cover !important;
background-size: cover !important;
background: url('img/index-banner1.jpg') no-repeat center center;
}
}
另外我对sweiper的滑动banner也做了类似的改进。也可以实现上述效果并保持sweiper的滑动。
注:此方法需要引入 sweiper 不懂的可以去sweiper官网下载
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide swiper-slide1">
<div class=" swiper-slide1-child img1"></div>
</div>
<div class="swiper-slide swiper-slide1">
<div class="swiper-slide1-child img2"></div>
</div>
</div>
<div class="swiper-pagination"></div>
</div>
//css代码
.swiper-slide1 {
position: relative;
top:;
left:;
width: 100%;
height: 610px;
overflow: hidden;
.swiper-slide1-child {
position: absolute;
top:;
left:;
width: 100%;
height: 100%;
overflow: hidden;
-webkit-background-size: cover !important;
-moz-background-size: cover !important;
-o-background-size: cover !important;
background-size: cover !important;
background: url('../img/index-banner1.jpg') no-repeat center center;
}
.img1 {
background: url('../img/index-banner1.jpg') no-repeat center center;
}
.img2 {
background: url('../img/index-banner2.jpg') no-repeat center center; }
}
4、placeholder更改默认颜色
<div id="four">
<input type="text " placeholder="更改颜色">
</div>
#four {
input::-webkit-input-placeholder {
color: blue;
}
input:-moz-placeholder {
color: blue;
}
input::-moz-placeholder {
color: blue;
}
}
最终效果:
5、让图片垂直居中显示
注:但是此方法#five margin将会无效。 除非给#five增加浮动。
<div id="Five">
<img src="img/login-icon2.png" alt="">
</div>
#Five {
display: table-cell;
cursor: pointer;
margin: 0 30px;
vertical-align: middle;
text-align: center;
width: 40px;
height: 40px;
border-radius: 50%;
border: 1px solid #29639a;
img {
margin-top: 5px;
line-height: 40px;
}
}
6、巧用1px边框,并解决retina屏幕DPI问题
在一般的项目中有很多元素需要增加1px边框,要是给每一个元素都写一次样式很麻烦,尤其是移动端的retina屏幕DPI的处理会更加麻烦,本案例讲讲解快速增加边框,并且解决retina屏幕。
很简单,只需要在需要边框的元素上增加class名称'border-1px’即可
<div id="Six" class="border-1px"></div>
#Six {
width: 500px;
height: 40px;
background-color: #1a2f5c;
.border-1px(#f00) }
//Six 的一像素边框
.border-1px(@color) {
position: relative;
&:after {
display: block;
position: absolute;
left:;
bottom:;
width: 100%;
border-top: 1px solid @color;
content: ' ';
}
}
//DPI达到1.5的机型边框缩放0.7 例如 :谷歌Nexus S、三星Galaxy S II等等
@media (-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5) {
.border-1px {
&:after {
-webkit-transform: scaleY(0.7);
transform: scaleY(0.7);
}
}
}
//DPI达到2.0的机型边框缩放0.7 例如 :苹果iPhone 4 、三星Galaxy S三世 等等
@media (-webkit-min-device-pixel-ratio: 2),(min-device-pixel-ratio: 2) {
.border-1px {
&:after {
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
}
}
}
7、图片与文字对不齐
如果出现图片与文字对不齐的现象,使用margin-top是不是很low呢,有一种更好用的办法,就是调试图片的基线。
使用vertical-align:middle调整基线,就可以实现图片在父元素中垂直居中,但是有时候我们的结果不满意,vertical-align也接收数字单位的值、top、bottom等值。本案例我就设置vertical-align:-6px; 0位置为top值。
<div id="Seven">
<img src="img/like-icon.png" alt="">
<span>猜你喜欢</span>
</div>
#Seven {
width: 500px;
height: 44px;
background-color: #1a2f5c;
text-align: center;
margin-top: 4px;
img {
width: 28px;
vertical-align: -6px;
line-height: 44px;
max-width: 100%;
}
span {
color: #ffffff;
display: inline-block;
line-height: 44px;
}
}
最终效果-是不是挺好。
8、1px边框全方位版本(上下左右都有)并且解决DPI问题
<div id="Eight"></div>
#Eight {
position: relative;
width: 400px;
height: 20px;
padding: 8px 10px;
margin:0 12px 30px;
background-color: #ffffff;
border-radius: 4px;
&:after {
width: 100%;
height: 100%;
position: absolute;
top:;
left:;
content: '';
border: 1px solid #cacaca;
border-radius: 4px;
}
@media (-webkit-min-device-pixel-ratio: 2),(min-device-pixel-ratio: 2) {
&:after {
width: 200%;
height: 200%;
-webkit-transform: scale(.5);
transform: scale(.5);
pointer-events: none;
-webkit-transform-origin: 0 0;
transform-origin: 0 0;
}
}
最终效果
9、使用利用vertical-align:middle,实现元素水平垂直居中。
实现原理主要是是让daughter的基线与son的基线对其并且使用vertical-align:middle进行居中,而且son的高度还是100%,所以就实现了垂直居中,再使用text-align: center;就实现了水平剧中。
<div id="Nine">
<div class="son">112312323</div>
<div class="daughter"></div>
</div>
#Nine {
width: 300px;
height: 300px;
left:;
top:;
text-align: center;
font-size:; /*设置font-size为了消除代码换行所造成的空隙*/
background-color: #1a2f5c;
.daughter {
width: 30%;
height: 30%;
background-color: white;
vertical-align: middle;
display: inline-block;
}
.son {
vertical-align: middle;
display: inline-block;
height: 100%;
}
}
最终效果
10、使用transform实现元素的垂直水平居中。
这个居中的实现原理是子元素对父元素做定位,定位到父元素百分之50的top,和百分之50的left,然后在减去子元素自身left和top的50%。就形成居中了。
<div id="Ten">
<div>
</div>
</div>
#Ten {
position: relative;
width: 300px;
height: 300px;
background-color: #1a2f5c;
div {
width: 30%;
height: 30%;
position: absolute;
left: 50%;
top: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
background-color: white;
}
}
最终效果
11、使用弹性盒模型实现垂直居中方法,最简单粗暴的方法,但是注意浏览器兼容性问题。
如果有同学不知道弹性布局的,我推荐百度搜“阮一峰弹性布局”我记得有两篇文章,一篇像色子似的,另外一个是语法的,建议先看语法再看,色子那篇。
<div id="Eleven">
<div>
</div>
</div
#Eleven {
width: 300px;
height: 300px;
background-color: #1a2f5c;
display: flex;
justify-content: center;
align-items: center; div {
width: 30%;
height: 30%;
background-color: white;
}
}
12、使用表格布局实现元素水平居中
实用表格方式实现这个方式有一个弊端就是如果被居中的子元素使用百分比单文那么久必须要给td,tr设置宽高。相对将稍微繁琐了一点点,
<table id="Twelve">
<tr>
<td>
<div class="daughter">
</div>
</td>
</tr>
</table>
#Twelve {
width: 300px;
height: 300px;
text-align: center;
background-color: #1a2f5c;
tr, td {
width: 100%;
height: 100%;
}
.daughter {
display: inline-block;
width: 30%;
height: 30%;
background-color: white;
}
}
最终效果
13、解决第一个子元素margin-top越界问题(会把父元素顶下来)
在一些项目中会遇见个给第一个子元素增加margin-top的时候会吧父元素顶下来。很多同学一般都会把margin改成padding,但是那样做很繁琐,现在我给大家带来几种解决方案。
1、给父元素加border——有副作用: 一般父元素Div用来做布局使用,添加border会使用内容的height和width变大
2、给父元素加padding-top:1px——有副作用
3、给父元素加overflow:hidden——有副作用:一旦子元素内容溢出,将会无法显示溢出的内容
4、为父元素添加内容生成:这样的话当前子元素就不在是父元素的第一个子元素这样就可以了,该方法无任何副作用,
本案例将会使用第四种方法。
<div id="Thirteen">
<div class="father"></div>
<div class="father">
<div class="child">child</div>
</div>
</div>
#Thirteen {
.father {
width: 200px;
height: 100px;
background-color: #1a2f5c;
&:before {
content: ' ';
display: table;
}
.child {
width: 50px;
height: 30px;
margin-top: 20px;
background-color: white;
}
}
}
最终效果
100个实用的CSS技巧,以及遇见的问题和解决方案。的更多相关文章
- 20个初学者实用的CSS技巧
过去就连一个镜像站点,我们都依靠大量的开发人员和程序员进行维护.得益于CSS和它的灵活性使得样式能够从代码中被独立抽离出来,从而让一个只具备基本CSS理论的初学者都能够轻易地改变网站的样式. 不论你是 ...
- 一个很实用的css技巧简析
我是小雨小雨,专注于更新有趣.实用内容的小伙,如果内容对大家有一点帮助,那么就请动动手指,给个关注.点赞支持一下吧. ^ - ^ 序言 前两天接到一个需求,其中包括一个有序的列表,我们今天就来看看这个 ...
- 分享几个很实用的CSS技巧对前端技术很有帮助
创建剪切动画 对于剪切动画,使用clip-path代替width/height,避免DOM重排导致性能过低. .animate { width: 200px; height: 200px; backg ...
- CSS技巧:逐帧动画抖动解决方案
笔者所在的前端团队主要从事移动端的H5页面开发,而团队使用的适配方案是: viewport units + rem.具体可以参见凹凸实验室的文章 – 利用视口单位实现适配布局 . 笔者目前(2017. ...
- 学无止境的CSS(xHTML+CSS技巧教程资源大全)
本文里面收集一些有关CSS的技巧.教程.工具和观点等,其中一些你也许早就运用的炉火纯青,也可能有的你听都没听说过.不管是新手还是高手,大家都继续学习吧. 一,Web 标准 要玩游戏,就得先了解规则.要 ...
- 平常写css网页制作时最实用的九条CSS技巧
一.使用css缩写 使用缩写可以帮助减少你CSS文件的大小,更加容易阅读.css缩写的主要规则请参看<css基本语法>. 二.明确定义单位,除非值为0 忘记定义尺寸的单位是CSS新手普遍的 ...
- 一些比较实用的css片段
新看了一个帖子,里面好多实用的css代码块,可拿出来当做功能库.先附上该文地址http://segmentfault.com/a/1190000002773955 里面的内容很多我挑了几个经过我验证的 ...
- 经验分享:多屏复杂动画CSS技巧三则
当下CSS3应用已经相当广泛,其中重要成员之一就是CSS3动画.并且,随着CSS动画的逐渐深入与普及,更复杂与细腻的动画场景也如雨后春笋般破土而出.例如上个月做的「企业QQ-新年祝福」活动: 感谢sh ...
- 网页设计师必备的10个CSS技巧
CSS是网页设计师的基础,对CSS的了解能使他们能够设计出更加美观别致的网页.使用CSS技巧来巧妙地处理CSS是非常令设计师着迷的事情.在CSS的深海世界里有很多有意思的东西,你只需要找到最适合你的就 ...
随机推荐
- ASP.NET Core ASP.NET Core+MVC搭建及部署
ASP.NET Core+MVC搭建及部署 一.创建项目: 1.选择ASP.NET Core Web Application(.NET Core) 注意框架 2.选择Web Application: ...
- mysqli扩展库---------预处理技术
1, PHP程序与mysql之间处理sql语句流程如下,减少执行时间方式有三种: ① 减少php发送sql次数: ② 减少php与mysql之间网络传输时间: ③ 减少mysql的编译时间: 2, 预 ...
- [Objective-C语言教程]块(12)
Objective-C类定义了一个将数据与相关行为相结合的对象. 有时,仅表示单个任务或行为单元而不是方法集合是有意义的. 块是C,Objective-C和C++等编程语言中的高级功能,它允许创建不同 ...
- short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
对于 short s1 = 1; s1 = s1 + 1;由于 s1+1运算时会自动提升表达式的类型,所以结果是 int型,再赋值给 short 类型 s1时, 编译器将报告需要强制转换类型的错误.对 ...
- 2016级算法第三次上机-D.双十一的抉择
915 双十一的抉择 思路 中等题.简化题目:一共n个数,分成两组,使得两组的差最接近0,就是说要使两组数都尽可能的接近sum/2. 思路还是很混乱的,不知道如何下手,暴力也挺难的,还不能保证对.想一 ...
- 阿里云服务主机部署Thinkphp系统错误解决方案
最近在阿里云上购买了虚拟主机,于是有了把自己的网站挂在云上的冲动,那就行动呗.本来想的很简单,以为在修改数据库配置之后,将文件打包上传,然后就可以了,可在实际操作过程中,出现了很多问题,找了很多资料, ...
- python全栈开发_day10_函数的实参和形参
一:函数的实参和形参 实参是在调用函数时()出现的外界的实际的值 形参不能再函数外部直接使用 1)实参的两种形式 实参是调用函数时()中传入的参数 1.位置实参 def a(a): print(a) ...
- [BZOJ 1937][Shoi2004]Mst 最小生成树
传送门 $ \color{red} {solution:} $ 对于每条树边\(i\),其边权只可能变小,对于非树边\(j\),其边权只可能变大,所以对于任意非树边覆盖的树边有 \(wi - di & ...
- Python中的正斜杠/与反斜杠\
知识点: 1. "/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠 2. 对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠\. ...
- POJ - 3585 树上最大流 换根法
题意:给出一棵树,边上有容量限制,求以任一点作为根和源点,叶子作为汇点的最大流的最大值 首先上网络流等于找死 树形DP可以\(O(n)\)求出以某点\(u\)为根的最大流,只需设\(f[u]=\sum ...