CSS如何php实现自定义图片像素下载0.5像素

详解css实现0.5像素边框的方法
原创
 09:15:40
233
这篇文章主要介绍了css实现0.5像素的边框,这里整理了详细的代码,非常具有实用价值,需要的朋友可以参考下公司的设计师在做设计图的时候都是以iphone6(宽为750物理像素)为基准进行设计的。iphone6的设备像素比(即css像素与物理像素的比例)是2,所以设计师在设计图画了边框为1px的box的时候,相对于css代码来说就是0.5像素。对于这个问题,最直观的方法就是css直接设置边框为0.5px,经过测试,iPhone可以正常显示,android下几乎所有的浏览器都会把0.5识别为0,即无边框状态,所以这种方式行不通CSS3有缩放的属性,我们可以利用这个属性,缩小50%的1px的边框,来实现这个功能,具体实现代码如下&p class=&border3&&
&p class=&content&&伪类设置的边框&/p&
&/p&css:.border3{
.border3:before{
content: '';
width: 200%;
height: 200%;
-webkit-transform-origin: 0 0;
-moz-transform-origin: 0 0;
-ms-transform-origin: 0 0;
-o-transform-origin: 0 0;
transform-origin: 0 0;
-webkit-transform: scale(0.5, 0.5);
-ms-transform: scale(0.5, 0.5);
-o-transform: scale(0.5, 0.5);
transform: scale(0.5, 0.5);
-webkit-box-sizing: border-
-moz-box-sizing: border-
box-sizing: border-
}实现思路:1、设定目标元素的参考位置2、给目标元素添加一个伪元素before或者after,并设置绝对定位3、给伪元素添加1px的边框4、用box-sizing: border-box 属性把边框都包进宽和高里面5、宽和高设置为 200%6、整个盒子模型缩小为0.57、调整盒子模型的位置,以左上角为基准 transform-origin: 0 0;实现结果在iphone显示如下:以上就是详解css实现0.5像素边框的方法的详细内容,更多请关注php中文网其它相关文章!
江湖传言:PHP是世界上最好的编程语言。真的是这样吗?这个梗究竟是从哪来的?学会本课程,你就会明白了。
PHP中文网出品的PHP入门系统教学视频,完全从初学者的角度出发,绝不玩虚的,一切以实用、有用...
点击数(112150)
ThinkPHP是国内最流行的中文PHP开发框架,也是您Web项目的最佳选择。《php.cn独孤九贱(5)-ThinkPHP5视频教程》课程以ThinkPHP5最新版本为例,从最基本的框架常识开始,将...
点击数(110235)
《php.cn原创html5视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了HTML知识。
点击数(84594)
本套教程,以一个真实的学校教学管理系统为案例,手把手教会您如何在一张白纸上,从零开始,一步一步的用ThinkPHP5框架快速开发出一个商业项目。
点击数(83709)
所有计算机语言的学习都要从基础开始,《PHP入门视频教程之一周学会PHP》不仅是PHP的基础部分更主要的是PHP语言的核心技术,是学习PHP必须掌握的内容,任何PHP项目的实现都离不开这部分的内容,通...
点击数(81040)
PHP开发工程师
文章总浏览数
相关视频章节通过CSS样式,可以设定文本的缩进,对齐,字符间隔等属性。
代码整理自w3school:http://www.w3school.com.cn
&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&
&meta http-equiv="Content-Type" content="text/ charset=utf-8" /&
&meta http-equiv="Content-Language" content="zh-cn" /&
(1)设置首行缩进:text-indent
(2)水平对齐:text-align
(3)字间隔(设置字,单词 之间的标准间隔):word-spacing
(4)字符间隔(设置字符或字母之间的间隔):letter-spacing
(5)字符转换(大小写):text-transform
(6)文本装饰:text-decoration
(7)处理空白符:white-space
body {background-color:#e9e9e9}
span.redStyle {color:red}
p#indentStyle {text-indent:5em}
p#indentStyleNega {text-indent:-5 padding-left: 5}
p#indentStylePercent {text-indent:20%}
div.divFixedWidth {width:500background-color:#}
div#outer {width: 500background-color:#bfb}
div#inner {text-indent: 10%;}
p#pFixedWidth {width: 200}
p.alignLeftStyle{text-align:left}
p.alignRightStyle{text-align:right}
p.alignCenterStyle{text-align:center}
p.bigWordSpace{word-spacing:0.5em}
p.smallWordSpace{word-spacing:-0.2em}
p.bigLetterSpace{letter-spacing:0.2em}
p.smallLetterSpace{letter-spacing:-0.2em}
p.upperCase span {text-transform:uppercase}
p.lowerCase span {text-transform:lowercase}
p.capitalize span {text-transform:capitalize}
p.underlineStyle {text-decoration:underline}
p.overlineStyle {text-decoration:overline}
p.whiteSpaceNormal {white-space:normal}
p.whiteSpacePre {white-space:pre}
p.whiteSpacePreWrap {white-space:pre-wrap}
p.whiteSpacePreLine {white-space:pre-line}
p.whiteSpaceNoWrap {white-space:nowrap}
&title&CSS 文本&/title&
&!--CSS文本属性可定义文本的外观,可以改变文本的颜色、字符间距,对齐文本,装饰文本,对文本进行缩进等--&
&h3&(一)首行数字缩进&/h3&
&p id="indentStyle"&&span class="redStyle"&首行缩进5em的段落。&/span&这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容&/p&
&h3&(二)首行数字缩进为负值&/h3&
&p id="indentStyleNega"&&span class="redStyle"&首行缩进-5em,padding-left=5em的段落(悬挂缩进的效果)。&/span&这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容&/p&
&h3&(三)首行相对父元素百分比缩进&/h3&
&div class="divFixedWidth"&
&p id="indentStylePercent"&&span class="redStyle"&首行相对父元素缩进20%。由于父元素是500px,因此本段落首行就缩进100px。&/span&这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容这是段落内容&/p&
&!--text-indent属性可以继承--&
&div id="outer"&
&div id="inner"&
some text. some text. some text.
&p id="pFixedWidth"&this is a paragragh.&/p&
&h3&(四)文本对齐方式&/h3&
&!--text-align 是一个基本的属性,它会影响一个元素中的文本行互相之间的对齐方式。(将块级元素或表元素居中,要通过在这些元素上适当地设置左、右外边距来实现。)--&
&div class="divFixedWidth"&
&p class="alignLeftStyle"&这是一个居左的段落&/p&
&p class="alignCenterStyle"&这是一个居中的段落&/p&
&p class="alignRightStyle"&这是一个居右的段落&/p&
&!--字间隔--&
&h3&(五)字间隔:设置字,单词 之间的间隔&/h3&
&p&This is a normal paragraph. 这是普通段落,这是普通段落。&/p&
&p class="bigWordSpace"&The spaces between words will be increased. 单词之间的间距被扩大了,单词之间的间距被扩大了。&/p&
&p class="smallWordSpace"&The spaces between words will be decreased. 单词之间的间距被缩小了,单词之间的间距被缩小了。&/p&
&p&注:word-spacing属性对中文无效。&/p&
&!--字符间隔--&
&h3&(六)字符间隔:设置字符或字母之间的间隔&/h3&
&p&This is a normal paragraph. 这是普通段落,这是普通段落。&/p&
&p class="bigLetterSpace"&The spaces between letters will be increased. 字符之间的间距被扩大了,字符之间的间距被扩大了。&/p&
&p class="smallLetterSpace"&The spaces between letters will be decreased. 字符之间的间距被缩小了,字符之间的间距被缩小了。&/p&
&!--字符转换--&
&h3&(七)字符转换:改变字母的大小写&/h3&
&p class="upperCase"&Hello world转为大写:&span&Hello world&span&&/p&
&p class="lowerCase"&Hello world转为大写:&span&Hello world&span&&/p&
&p class="capitalize"&Hello world转为每个单词首字母大写:&span&Hello world&span&&/p&
&!--字符装饰--&
&h3&(八)字符装饰:下划线/贯穿线 等&/h3&
&p class="underlineStyle"&下划线&/p&
&p class="overlineStyle"&上划线&/p&
&!--空格处理--&
&h3&(九)空格处理&/h3&
&p class="whiteSpaceNormal"&(1)normal:这个
段落里面有 很多 的空格
的换行符,测试
空格处理方式&/p&
&p class="whiteSpacePre"&(2)pre:这个
段落里面有 很多 的空格
的换行符,测试
空格处理方式&/p&
&p class="whiteSpacePreWrap"&(3)pre-wrap:这个
段落里面有 很多 的空格
的换行符,测试
空格处理方式&/p&
&p class="whiteSpacePreLine"&(4)pre-line:这个
段落里面有 很多 的空格
的换行符,测试
空格处理方式&/p&
&p class="whiteSpaceNoWrap"&(5)nowrap:这个
段落里面有 很多 的空格
的换行符,测试
空格处理方式&/p&
&/html&效果图:
HTML&CSS——选择器中间加空格和逗号的区别?
p span{}选择了P元素下的所有span元素。这是后代选择器,空格是后代选择器的标识符。
p,span{}选择了P元素和span元素。这是多元素选择器,同时选择多个元素,元素之间用逗号分隔。...
HTML中CSS 添加左缩进和表格边框说明(去掉左右下边框)
1、在HTML中加自定义的格式
(第一段代码)
background-color :...
css设置段落文字首行缩进2字符,文字靠左侧显示,文字间距0.5像素
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&&
http://www.w3.org/1999/xhtml&&
无标题文档...
vs2012中css缩进设置
vs2012中css的缩进是半展开并且 是层级缩进的,用着很不方便
工具==》选项==》文本编辑器==》CSS==》格式设置==》紧凑模式
其他模式可以根据自己喜好选择...
React Native TextInput 实现文本间隔
在学习javaScript怎么使用正则表达式的时候,灵感突然来了 ,是否可以使用分组的方法来实现文本间隔。
效果是如图
(在空格处删,效果不好只是光标前移了,暂时优化...
浅谈CSS中的&li&之间的空白间隔问题
有时候,我们需要将横向排列,而又为了能设置其宽度和高度,为其设置display:inline-block,相邻之间会出现8px的空白间隔,不是margin也不是padding。
今天在做开发的时候有碰到了,无空格长字符换行的问题,总是记不住css的设置,今天把它记录下来,方便自己以后查阅,另外有需要的朋友也可以参考一下
默认情况下,一个 DIV或者其他元素的文本,如...
通过简单的css设置页面的文字无法被选定。&div class=&select&&我不能被选中复制&/div&.select...
没有更多推荐了,说到两端对齐,大家并不陌生,在word、powerpoint、outlook等界面导航处,其实都有一个两端对齐(分散对齐)的按钮,平时使用的也不多,我们更习惯与左对齐、居中对齐、右对齐的方式来对齐页面的文本或模块。
响应式网页设计出现以来,更多是使用百分比布自适应布局,特别是在移动端,两端对齐的方式显得越来越重要。那么,如何使用css实现两端对齐,相信很多同学会文本对齐的text-align:justify,这是今天要讲的其中一种方式,另外还有两种更精彩的实现方式,请往下看~
下图是需要实现的demo,取了宽度分别为320px、480px、640px下的截图,也就是说再随浏览器窗口宽度的调整,按钮菜单高度不变,宽度会按比例自动适应,且左右两端对齐:
目录(更新于)
方法一:使用text-align:justify
感谢join同学提供的方案,使用该方案可以做到兼容所有的浏览器,不过实现起来会比较复杂,而且带有hack的味道
text-align:justify 属性是全兼容的,使用它实现两端对齐,需要注意在模块之间添加[空格/换行符/制表符]才能起作用,同样,实现文本对齐也是需要在字与字之间添加[空格/换行符/制表符]才能起作用
&p&模块内的元素之间为&分隔,只支持webkit和Gecko内核浏览器&/p&
&div class="demo"&&a class="link" href="#none"&10元&/a&&&a class="link" href="#none"&20元&/a&&&a class="link" href="#none"&30元&/a&&&a class="link" href="#none"&50元&/a&
&p&模块内的元素之间为换行符&/p&
&div class="demo"&
&a class="link" href="#none"&10元&/a&
&a class="link" href="#none"&20元&/a&
&a class="link" href="#none"&30元&/a&
&a class="link" href="#none"&50元&/a&
&p&模块内的元素之间为空格符&/p&
&div class="demo"&
&a class="link" href="#none"&10元&/a& &a class="link" href="#none"&20元&/a& &a class="link" href="#none"&30元&/a& &a class="link" href="#none"&50元&/a&
&p&模块内的元素之间为无分隔符,justify不起作用&/p&
&div class="demo"&&a class="link" href="#none"&选项1&/a&&a class="link" href="#none"&选项2&/a&&a class="link" href="#none"&选项3&/a&&a class="link" href="#none"&选项4&/a&&/div&
*{margin:0;padding:0;}
说明: 1.IE中要实现块内单行两端对齐需要使用其私有属性text-align-last:justify配合,text-align-last 要生效,必须先定义text-align 为justify
2.line-height:0 解决标准浏览器容器底部多余的空白
text-align:justify;
text-align-last:justify;
line-height:0;
height:44px;
模块使用[换行符]或[空格符]后,webkit浏览器中会引起最后一个模块有多余空白,使用font-size:0可清除该空格
@media all and (-webkit-min-device-pixel-ratio:0){
font-size:0;
1.text-align-last:justify 目前只有IE支持,标准浏览器需要使用 .demo:after 伪类模拟类似效果
2.opera浏览器需要添加 vertical-align:top 才能完全解决底部多余的空白
.demo:after{
display:inline-block;
overflow:hidden;
width:<span style="color: #%;
content:'';
vertical-align:top;
width:20%;
display:inline-block;
height:44px;
line-height:44px;
text-align:center;
border:1px solid #428cc8;
color:#666;
font-size:16px;
margin-bottom:5px;
border-radius:3px;
background-color:#fefefe;
background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fefefe),color-stop(1,#eee));
color:#666;
text-decoration:none;
&测试地址:
方法二:使用justify-content:space-between
box-pack是css3的新属性,依赖于display:box(旧版弹性布局),受box-orient影响,box-pack决定了子标签水平对齐的方式,可选值有start | end | center | justify。使用box-pack:justify来实现两端对齐非常简单,代码量也少。为了向前看齐,把display:flex(新版弹性布局)也一起写进去~
如果是做基于webkit内核的webapp开发和winphone IE10及以上,那么一切都好办~
关于盒模型布局的介绍,这里有篇文章《》,写得不错,推荐给大家~
&div class="demo"&
&a class="link" href="#none"&10元&/a&
&a class="link" href="#none"&20元&/a&
&a class="link" href="#none"&30元&/a&
&a class="link" href="#none"&50元&/a&
*{margin:0;padding:0;}
display:box定义布局为盒模型后,可使用盒模型下的box-pack:justify属性
display:-webkit-box;
display:-webkit-flex;
display:-ms-flexbox;
display:flex;
-webkit-box-pack:justify;
-webkit-justify-content:space-between;
-ms-flex-pack:justify;
justify-content:space-between;
width:20%;
display:block;
height:44px;
line-height:44px;
text-align:center;
border:1px solid #428cc8;
color:#666;
font-size:16px;
margin-bottom:5px;
border-radius:3px;
background-color:#fefefe;
background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fefefe),color-stop(1,#eee));
color:#666;
text-decoration:none;
测试地址:
方法三:使用column(多列布局)
column也是是css3的属性,意思是多列布局,使用column来实现两端对齐也十分简单,只需要设置模块的个数跟column的列数一致即可,不过它的自动适应方式跟使用box-pack还有有点差别,并不是很标准,像列与列的间距暂无法定义为百分比。值得高兴的是目前支持所有高级浏览器,对IE10的支持也良好,而IE9及以下版本不支持,webapp开发中,对于不需要兼容winphone7手机(IE9)的需求来说,可以充分发挥column的强大作用~
关于column的使用方法,w3school的有相关教程:
&div class="demo"&
&a class="link" href="#none"&10元&/a&
&a class="link" href="#none"&20元&/a&
&a class="link" href="#none"&30元&/a&
&a class="link" href="#none"&50元&/a&
*{margin:0;padding:0;}
1.column-count定义了对象的列数,例子中有4个模块,那么定义为4列
2.column-gap定义了对象中列与列的间距,间距不能设置为百分比,显得不够灵活
-webkit-column-count:4;-moz-column-count:4;column-count:4;
-webkit-column-gap:20px;-moz-column-gap:20px;column-gap:20px;
display:block;
height:44px;
line-height:44px;
text-align:center;
border:1px solid #428cc8;
color:#666;
font-size:16px;
margin-bottom:5px;
border-radius:3px;
background-color:#fefefe;
background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fefefe),color-stop(1,#eee));
color:#666;
text-decoration:none;
测试地址:
移动端文本两端对齐示例
text-justify示例(补充于:)
justify-content:space-between示例(补充于:)
林小志大神的解决方案(补充于:)
以上3种实现方式各有优缺点,具体看实际项目使用,如果大家有更好的实现方式,欢迎留言探讨~
阅读(...) 评论()
朋友同事同行  之前在网上看到一些用纯CSS3实现的酷炫效果,以为实现起来比较困难,于是想看看具体是怎么实现的。
一、笑脸猫动画
实现效果如下:
这个实现起来确实比较麻烦,很多地方需要花时间,有耐心地调整。
1.先看下页面结构:
&div class="container"&
&!-- 脸 --&
&div class="face"&
&!-- 头发 --&
&div class="hair"&
&div&&/div&
&!-- 眼睛 --&
&div class="eye-wrap"&
&div class="eye left"&
&div class="eye-circle"&
&div class="eye-core"&&/div&
&div class="eye-bottom"&&/div&
&div class="eye-red"&&/div&
&div class="eye right"&
&div class="eye-circle"&
&div class="eye-core"&&/div&
&div class="eye-bottom"&&/div&
&div class="eye-red"&&/div&
&!-- 鼻子 --&
&div class="nose"&
&!-- 嘴巴 --&
&div class="mouth-wrap"&
&!-- &div class="mouth-top"&&/div& --&
&div class="mouth left"&&/div&
&div class="mouth right"&&/div&
&!-- 胡子 --&
&div class="mustache-wrap"&
&div class="mustache left"&
&div&&/div&
&div&&/div&
&div&&/div&
&div&&/div&
&div&&/div&
&div class="mustache right"&
&div&&/div&
&div&&/div&
&div&&/div&
&div&&/div&
&div&&/div&
&!-- 耳朵 --&
&div class="ear-wrap"&
&div class="ear left"& &/div&
&div class="ear right"& &/div&
2.再看css部分
1.先看脸部face:
/* top: 100 */
left: 50%;
position: absolute;
width: 400px;
height: 340px;
margin-left: -200px;
margin-top: -170px;
border-radius: 50% 50% 35% 35%;
border: 2px solid #000;
z-index: 10;
background: #f3f3f3;
overflow: hidden;
主要是要画出椭圆形,width和height设置的值要注意,脸比较宽。然后关键就是border-radius的设置了:
border-radius全部设置为0时,就是一个长方形,然后把它的四个角对应的设置下,就可以出现我们想要的效果。
2.接下来看耳朵的设置:
耳朵看起来其实也是一个椭圆,通过设置border-radius,调出想要的效果。不过需要被遮住一部分,所以在HTML结构中,我把它放在face的外面了。
/* 耳朵 */
.ear-wrap {
position: absolute;
width: 400px;
top: 100px;
left: 50%;
margin-left: -200px;
width: 160px;
height: 200px;
position: absolute;
top: -22px;
border: 2px solid #000;
background: #f3f3f3;
transform: rotate(-15deg);
-ms-transform: rotate(-15deg);
-moz-transform: rotate(-15deg);
-webkit-transform: rotate(-15deg);
-o-transform: rotate(-15deg);
border-radius: 4% 80% 0% 50%;
transition: all 1s;
.ear-wrap .right {
left: auto;
border-radius: 80% 4% 50% 0%;
transform: rotate(15deg);
-ms-transform: rotate(15deg);
-moz-transform: rotate(15deg);
-webkit-transform: rotate(15deg);
-o-transform: rotate(15deg);
这是竖起来的耳朵,通过&transform:rotate(15deg); 旋转一点,耳朵就塌下来了。
3.然后是头发:
&有了上述的实践,知道头发也好弄了,还是椭圆
/* 头发 */
position: absolute;
width: 180px;
height: 160px;
left: 50%;
margin-left: -90px;
background: #8d8d8d;
overflow: hidden;
border-radius: 0 0 50% 50%;
.hair div {
width: 90px;
height: 160px;
background: #f0ac6b;
另外一个颜色,只需要在里面加一个子div,然后给不同的颜色就ok。
4.再来看眼睛:
眼睛比较复杂,拆分四个小部件,眼眶,眼珠,下眼线,眼红(笑起来露出的表情),对应的效果设置为:
/* 眼睛 */
.eye-wrap {
position: absolute;
width: 300px;
height: 60px;
top: 200px;
left: 50%;
margin-left: -150px;
overflow: hidden;
.eye-wrap .eye {
height: 100px;
width: 100px;
position: absolute;
.eye-wrap .eye-circle {
width: 100px;
height: 100px;
border: 2px solid #000;
overflow: hidden;
position: absolute;
border-radius: 50%;
box-sizing: border-box;
.eye-wrap .eye-core {
height: 100px;
width: 30px;
/* margin: 0 */
background: #000;
position: absolute;
left: 50%;
margin-left: -15px;
transition: all 1s;
.eye-wrap .eye-bottom {
height: 50px;
width: 160px;
border-radius: 50%;
position: absolute;
/* background: #000; */
margin-top: 50px;
border-top: 2px solid #000;
left: -30px;
background: #f6f7f2;
transition: all 1s;
.eye-wrap .right {
left: auto;
right: 0px;
.eye-red {
position: absolute;
height: 28px;
width: 70px;
background: red;
top: 34px;
/*top: 64*/
left: 18px;
border-radius: 50% 50% 50% 50%;
background-image: -moz-radial-gradient( 50% 50%, rgba(253,214,240,0.8) 0%, rgba(253,224,244,0.8) 66%, rgba(253,234,247,0.8) 100%);
background-image: -webkit-radial-gradient( 50% 50%, rgba(253,214,240,0.8) 0%, rgba(253,224,244,0.8) 66%, rgba(253,234,247,0.8) 100%);
background-image: -ms-radial-gradient( 50% 50%, rgba(253,214,240,0.8) 0%, rgba(253,224,244,0.8) 66%, rgba(253,234,247,0.8) 100%);
opacity: 0.0;
/* transition: all 1.5s; */
transition: all 0.1s ease-in 0.2s;
注意左右两只眼睛效果大致是一样,只是位置不一样,这是我们只需要设置右边的 right: 0 就可以(因为设置了position: absolute)
/* 鼻子 */
width: 30px;
height: 10px;
/* background: #000; */
border-bottom: 8px solid #000;
border-radius: 0% 0% 50% 50%;
top: 250px;
left: 50%;
margin-left: -15px;
position: absolute;
这里特别注意,height:10 border-bottom: 8px solid #000;的设置,我本来想只用height:10然后设置border-radius,可是效果却长这样:
没有半圆的效果,是高度设置不够?变成18px,这货长这样,也不对,所以就加上border-bottom
/* 嘴巴 */
.mouth-wrap {
position: absolute;
top: 268px;
width: 100px;
left: 50%;
margin-left: -50px;
height: 20px;
overflow: hidden;
width: 50px;
height: 40px;
border-bottom: 4px solid #000;
border-right: 4px solid #000;
border-radius: 0% 40% 50% 20%;
margin-top: -26px;
position: absolute;
transition: all 1s;
.mouth-wrap .right {
border-bottom: 4px solid #000;
border-right: none;
border-left: 4px solid #000;
border-radius: 40% 0% 20% 50%;
position: absolute;
left: auto;
算是比较简单,设置border-bottom,border-left或border-right就可以。嘴巴上翘的效果是改变其border-radius值
7.两边的胡子:
/* 胡子 */
.mustache-wrap {
height: 80px;
width: 380px;
position: absolute;
top: 190px;
z-index: 20;
left: 50%;
margin-left: -190px;
.mustache & div:first-child {
width: 30px;
height: 10px;
border-top: 6px #E53941 solid;
border-radius: 30% 50% 20% 50%;
transform: rotate(25deg);
-ms-transform: rotate(25deg);
-moz-transform: rotate(25deg);
-webkit-transform: rotate(25deg);
-o-transform: rotate(25deg);
margin-left: 20px;
.mustache & div:nth-child(2) {
width: 20px;
height: 6px;
background-color: #E53941;
border-radius: 50% 50% 50% 50%;
transform: rotate(25deg);
-ms-transform: rotate(25deg);
-moz-transform: rotate(25deg);
-webkit-transform: rotate(25deg);
-o-transform: rotate(25deg);
margin-left: 20px;
.mustache & div:nth-child(3) {
/*margin-top:10*/
width: 32px;
height: 10px;
border-bottom: 4px #E53941 solid;
border-radius: 30% 0% 50% 30%;
transform: rotate(25deg);
-ms-transform: rotate(25deg);
-moz-transform: rotate(25deg);
-webkit-transform: rotate(25deg);
-o-transform: rotate(25deg);
margin-left: 8px;
.mustache & div:nth-child(4) {
margin-top: 20px;
width: 26px;
height: 20px;
border-bottom: 4px #E53941 solid;
border-radius: 30% 0% 50% 30%;
transform: rotate(30deg);
-ms-transform: rotate(30deg);
-moz-transform: rotate(30deg);
-webkit-transform: rotate(30deg);
-o-transform: rotate(30deg);
margin-left: 28px;
.mustache & div:last-child {
width: 22px;
height: 10px;
border-bottom: 3px #E53941 solid;
border-radius: 0% 0% 50% 50%;
transform: rotate(-15deg);
-ms-transform: rotate(-15deg);
-moz-transform: rotate(-15deg);
-webkit-transform: rotate(-15deg);
-o-transform: rotate(-15deg);
margin-left: 40px;
margin-top: -8px;
/*右边胡子*/
.mustache-wrap .right {
transform: rotateY(180deg);
-webkit-transform: rotateY(180deg); /* Safari 和 Chrome */
-moz-transform: rotateY(180deg); /* Firefox */
margin-top: -85px;
虽然比较麻烦,不过也算是简单的图形,只需要把height,width,border-top,border-radius,transform: rotate这些值设置恰当就好。
8.鼠标hover样式:
/*鼠标hover样式*/
.container:hover .ear-wrap & div:first-child {
/* left: -10 */
transform: rotate(0deg);
-ms-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
-o-transform: rotate(0deg);
border-radius: 4% 80% 0% 60%;
transition: all 1s;
/*transition: transform 1s,left 1s;*/
.container:hover .ear-wrap & div:last-child {
/* right: -10 */
transform: rotate(0deg);
-ms-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
-o-transform: rotate(0deg);
border-radius: 80% 4% 60% 0%;
transition: all 1s;
/*transition: transform 1s,right 1s;*/
.container:hover .eye-bottom {
margin-top: 30px;
transition: all 1s;
.container:hover .eye-red {
opacity: 1;
transition: all 2.5s;
.container:hover .mouth {
border-radius: 50%;
transition: all 1s;
.container:hover .eye-core {
width: 40px;
margin-left: -20px;
transition: all 1s;
耳朵,嘴巴,眼睛等地方需要修改transform,border-radius,width等值的属性。
3.线上效果及源码
线上效果:
参考资料:
二:立方体旋转
HTML部分:
&body class="body"&
&div class="rect-wrap"&
&!-- //舞台元素,设置perspective,让其子元素获得透视效果。 --&
&div class="container"&
&!-- //容器,设置transform-style: preserve-3d,让其子元素在3D空间呈现 --&
&div class="top slide"&1&/div&
&!-- //立方体的六个面 --&
&div class="bottom slide"&2&/div&
&div class="left slide"&3&/div&
&div class="right slide"&4&/div&
&div class="front slide"&5&/div&
&div class="back slide"&6&/div&
.rect-wrap {
position: relative;
perspective: 2000px;
.container {
width: 400px;
height: 400px;
transform-style: preserve-3d;
transform-origin: 50% 50% 100px;
/* //设置3d空间的原点在平面中心再向Z轴移动200px的位置 */
/* left: 50%;
margin-left: -200 */
top: 100px;
width: 200px;
height: 200px;
position: absolute;
background: #000;
line-height: 200px;
text-align: center;
color: #fff;
font-size: 30px;
font-weight: bold;
left: 100px;
top: -100px;
transform: rotateX(-90deg);
transform-origin: bottom;
background: red;
left: 100px;
bottom: -100px;
transform: rotateX(90deg);
transform-origin: top;
background: grey;
left: -100px;
bottom: 100px;
transform: rotateY(90deg);
transform-origin: right;
background: green;
left: 300px;
bottom: 100px;
transform: rotateY(-90deg);
transform-origin: left;
background: yellow;
left: 100px;
top: 100px;
transform: translateZ(200px);
background: black;
left: 100px;
top: 100px;
transform: translateZ(0);;
background: blue;
@keyframes rotate-frame {
transform: rotateX(0deg) rotateY(0deg);
transform: rotateX(0deg) rotateY(180deg);
transform: rotateX(-180deg) rotateY(180deg);
transform: rotateX(-360deg) rotateY(180deg);
transform: rotateX(-360deg) rotateY(360deg);
transform: rotateX(-180deg) rotateY(360deg);
transform: rotateX(90deg) rotateY(180deg);
transform: rotateX(0) rotateY(180deg);
transform: rotateX(90deg) rotateY(90deg);
transform: rotateX(90deg) rotateY(0);
transform: rotateX(0) rotateY(0);
.container{
animation: rotate-frame 30s linear infinite;
1.3维空间图
电脑屏幕中心为原点,横向为X轴,纵向为Y轴,人脸的方向为Z轴;
translate(x,y)、translateX(x)、translateY(y)、translateZ(z)、translate3d(x,y,z):定义位置的移动距离
rotate(angle)、rotateX(a)、rotateY(a)、rotateZ(a)、rotate3d(x,y,z,angle):定义元素的旋转角度。
2.perspective属性
perspective 属性定义 3D 元素距视图的距离,以像素计。该属性允许您改变 3D 元素查看 3D 元素的视图。
当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本身。
注释:perspective 属性只影响 3D 转换元素。
提示:请与&&属性一同使用该属性,这样您就能够改变 3D 元素的底部位置。
3.transform-style属性
transform-style: flat|preserve-3d; 默认值为flat,表示子元素以2D平面呈现;perserve-3d表示子元素以3D平面呈现
4.transform-origin属性
transform-origin 属性允许您改变被转换元素的位置(可以理解为元素以哪个位置为旋转原点)。
transform-origin: x-axis y-axis z-
属性演示效果:
默认值为: 50% 50% 0
5.线上效果及源码
线上效果:
参考资料:
三、酷炫button
效果:(渣渣像素(/ □ \))
看下Twitter 做的 立体按钮效果,类似翻盖的动作是怎么做的。
HTML部分:
&body class="body"&
&div class="button"&
hello, welcome to the new world!
&div class="cover"&
&div class="innie"&&/div&
&div class="spine"&&/div&
&div class="outie"&&/div&
&div class="shadow"&&/div&
&/section&
section, section div {
transition-duration: .6s;
* { box-sizing: border-box; }
html, body { height: 100%; }
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background-image: -webkit-radial-gradient(center top, circle farthest-corner, #FFFFFF 0%, #D8DFE9 100%);
background-image: radial-gradient(circle farthest-corner at center top, #FFFFFF 0%, #D8DFE9 100%);
overflow: hidden;
section, .button { transition-timing-function: ease; }
display: inline-block;
position: relative;
padding: .375rem .375rem 0;
height: 2.5rem;
background: #A9ADB6;
border-radius: .25rem;
perspective: 300;
box-shadow: 0 -1px 2px #fff, inset 0 1px 2px rgba(0,0,0,.2), inset 0 .25rem 1rem rgba(0,0,0,.1);
.button { opacity: 0; }
position: absolute;
top: 0; right: 0; bottom: 0; left: 0;
transform-origin: center bottom;
transform-style: preserve-3d;
font: 1.25em/2 "icon";
color: white;
text-align: center;
pointer-events: none;
z-index: 100;
.innie, .outie, .spine, .shadow { position: absolute; width: 100%; }
.innie, .outie {
height: 100%;
background-image: -webkit-linear-gradient(top, transparent 0%, rgba(0,0,0,.1) 100%);
border-radius: .25rem;
.innie:after, .outie:after { content:"t"; }
background-color: #67E2FE;
text-shadow: 0 -2px 4px rgba(0,0,0,.2);
top: .25rem;
background: #20C7F3;
height: .25rem;
transform: rotateX(90deg);
transform-origin: center top;
top: 100%;
height: 3.5rem;
transform-origin: center top;
transform: rotateX(90deg);
opacity: 0;
z-index: 0;
background-image: -webkit-linear-gradient(top, rgba(0,0,0,.6) 0%, transparent 100%);
background-image: linear-gradient(to bottom, rgba(0,0,0,.6) 0%, transparent 100%);
border-radius: .4rem;
background-color: #2EC8FA;
transform: translateZ(.25rem);
text-shadow: 0 2px 4px rgba(0,0,0,.2);
section:hover { background: #EBEFF2; }
section:hover .button { opacity: 1; }
section:hover .cover, section:hover .innie, section:hover .spine, section:hover .outie, section:hover .spine { transition-timing-function: cubic-bezier(.2,.7,.1,1.1); }
section:hover .cover { transform: rotateX(-120deg);
section:hover .innie { background-color: #3ADAFC; }
section:hover .spine { background-color: #52B1E0; }
section:hover .outie { background-color: #2174A0; color: rgba(255,255,255,0); }
section:hover .shadow {
opacity: 1;
transform: rotateX(45deg) scale(.95);
主要是一些效果的叠加,然后注意&transform-style: preserve-3d;设置3D效果。
线上效果及源码
线上效果:
四:3D照片墙
HTML部分:
&body class="body"&
&div class="photo-wrap"&
&!-- 舞台 --&
&div class="container"&
&!-- 容器 --&
&div class="img"&我是中心&/div&
&div class="img img01"&1&/div&
&div class="img img02"&2&/div&
&div class="img img03"&3&/div&
&div class="img img04"&4&/div&
&div class="img img05"&5&/div&
&div class="img img06"&6&/div&
&div class="img img07"&7&/div&
&div class="img img08"&8&/div&
&div class="img img09"&9&/div&
@keyframes rotate-frame {
transform: rotateX(-20deg) rotateY(0deg);
transform: rotateX(-20deg) rotateY(36deg);
transform: rotateX(-20deg) rotateY(72deg);
transform: rotateX(-20deg) rotateY(108deg);
transform: rotateX(-20deg) rotateY(144deg);
transform: rotateX(-20deg) rotateY(180deg);
transform: rotateX(-20deg) rotateY(216deg);
transform: rotateX(-20deg) rotateY(252deg);
transform: rotateX(-20deg) rotateY(288deg);
transform: rotateX(-20deg) rotateY(324deg);
transform: rotateX(-20deg) rotateY(360deg);
background: #f9f9f9;
.photo-wrap {
perspective: 800px;
width: 800px;
.container {
width: 800px;
height: 500px;
margin: 0 auto;
position: relative;
transform-style: preserve-3d;
transform:rotateX(-10deg);
animation: rotate-frame 10s linear infinite;
width: 200px;
height: 118px;
line-height: 118px;
text-align: center;
position: absolute;
top: 160px;
left: 300px;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.9) inset;
-webkit-box-reflect:below 3px -webkit-linear-gradient(top,rgba(0,0,0,0) 40%,rgba(0,0,0,0.5));
background: pink;
background:-moz-linear-gradient(top, pink, rgba(0, 0, 255, 0.5));
background:-webkit-gradient(linear, 0 0, 0 bottom, from(#ccccff), to(rgba(174, 221, 129, 0.5)));
background:-o-linear-gradient(top, pink, rgba(0, 0, 255, 0.5));
transform: rotateY(0deg);
transform: rotateY(0deg) translateZ(300px);
transform: rotateY(40deg) translateZ(300px);
transform: rotateY(80deg) translateZ(300px);
transform: rotateY(120deg) translateZ(300px);
transform: rotateY(160deg) translateZ(300px);
transform: rotateY(200deg) translateZ(300px);
transform: rotateY(240deg) translateZ(300px);
transform: rotateY(280deg) translateZ(300px);
transform: rotateY(320deg) translateZ(300px);
1.倒影的实现
基本语法:
-webkit-box-reflect:
offset属性值定义图片和倒影影像之间的间距:
-webkit-box-reflect: below 3
给倒影增加消影效果:
-webkit-box-reflect:below 3px -webkit-linear-gradient(top,rgba(0,0,0,0) 40%,rgba(0,0,0,0.5));
2.线上效果及源码
线上效果:
参考资料:,
补充:没想到这篇文章不仅上了最多推荐,还上了编辑推荐,有点受宠若惊,自己感觉写得还不够用心,感谢大家的点赞,博主以后会继续努力。
阅读(...) 评论()

我要回帖

更多关于 如何把图片像素化 的文章

 

随机推荐