博客 - 标签:CSS

纯css实现圆角带箭头的提示框效果(非css3)

2010-04-30 下午 - html/css/xml/xsl - -

实现效果如下图:

纯css实现圆角

这个方法并非我创,我也是以前在网上看到,记下了原理。今天有时间了,整理思路,写出代码!原文我不记得地址了,只记得原作者是google的前端工程师,方法很赞,尽管多了四个空标签(如果不要三角箭头,就只多了外层嵌套的两个标签)。

一般我处理圆角效果,都是弄一张图片,里面放4个角(或更多颜色的角),利用浮动、相对定位再配合负margin来实现,也要多写空标签,而且是两对嵌套的标签(共4个)。这个方法固然好,毕竟用图片嘛,更美观,锐化效果要好。现在这个方法不用图片,从优化的角度分析,纯css不是更好吗!不过弊端还是有,只适合半径1-2像素的圆角,大了锯齿就出来啦~

<div class="rc_box1">
    
<div class="rc_box2">
        
<div class="rc_box3">
            oh~!my god god god god!
        
</div>
    
</div>
    
<div class="ov1"></div>
    
<div class="ov2"></div>
</div>
.rc_box1,.rc_box2,.rc_box3 { display:inline-block; *display:inline; *zoom:1; position:relative; border-style:solid; border-color:#ddd;}
.rc_box2,.rc_box3 { border-width:0 1px; *left:-2px; background-color:#f3f3f3;}
.rc_box1 { border-width:1px; line-height:1.5;}
.rc_box2 { margin:0 -2px;}
.rc_box3 { margin:1px -2px; padding:0 6px;}
.ov1,.ov2 { position:absolute; left:44%; overflow:hidden; width:0; height:0; border-left:6px dotted transparent; border-right:6px dotted transparent;border-top:6px solid transparent;}
.ov1 { top:26px; border-top-color:#ddd;}
.ov2 { top:25px; border-top-color:#f3f3f3;}

如果需要实现多种颜色,那么可以将定义颜色的样式属性抽出来,单独弄一个类,比如灰色,新建个gary类,放在最外层标签上,控制好颜色。想实现几种就建几种。代码如下:

第一个div添加gray这个类:

<div class="rc_box1 gray">
    ...
</div>

以下css添加至样式表最后一行,再将前面控制颜色的属性删掉:

.gray,.gray .rc_box2,.gray .rc_box3 {border-color:#ddd;}
.gray .rc_box2,.gray .rc_box3 { background-color:#f3f3f3;}
.gray .ov1 { border-top-color:#ddd;}
.gray .ov2 { border-top-color:#f3f3f3;}

4 Comments »

有序+发布时间+字数限制的新闻列表

2010-04-30 下午 - html/css/xml/xsl - -

新闻列表示意图

接手新项目,要写一个如上图的东西,简单做个说明:外层盒子固定宽度,文章标题字数超出即隐藏,并实现省略号(支持的浏览器),日期位置跟随标题宽度。

难度不大,关键要了解各浏览器的特性。这个东西难点就在于时间元素上,我利用float+负margin来解决,兼容性也好,遗憾的是hack没少用,实属无奈啊!-_-!

下面贴出代码:

<div id="demo">
 
<ol class="clearfix">
    
<li><a href="#@">方大同5月8日广州开唱 不秀粤语最想和蔡琴合作</a><span>2008-03-14</span></li>
    
<li><a href="#@">麻城杜鹃开的艳 奶茶歌声唱的亮</a><span>2008-03-14</span></li>
    
<li><a href="#@">5月2日变形金刚助阵五月天</a><span>2008-03-14</span></li>
    
<li><a href="#@">方大同5月8日广州开唱</a><span>2008-03-14</span></li>
    
<li><a href="#@">刘若英上海个唱即将开演 设计独特处处有看点</a><span>2008-03-14</span></li>
    
<li><a href="#@">五月天玛莎低调避庆生</a><span>2008-03-14</span></li>
    
<li><a href="#@">4月24日五月天厦门演唱会 凛凛寒风激情不</a><span>2008-03-14</span></li>
    
<li><a href="#@">任贤齐群星NOW翻成都 小齐家族两次登台</a><span>2008-03-14</span></li>
    
<li><a href="#@">周华健与群星NOW翻成都</a><span>2008-03-14</span></li>
    
<li><a href="#@">刘若英《在一起》发片首周成绩亮眼</a><span>2008-03-14</span></li>
 
</ol>
</div>
#demo { font:12px/1.5 Arial;}
#demo ol { padding-left:23px; width:14em; background:url(num.gif) no-repeat 2px 6px;}
#demo li { clear:both; line-height:23px;}
#demo li a { float:left; _height:23px; _background:transparent; overflow:hidden; white-space:nowrap; _white-space:normal; max-width:14em; -o-text-overflow:ellipsis; text-overflow:ellipsis;}
#demo li span { float:left; _display:inline; _position:relative; width:70px; padding-left:10px; margin-right:-80px; font-size:11px; color:#999;}

css第4行, _background:transparent 解决IE6下“莫名”行高问题。

css第5行, _position:relative 解决IE6下该元素随外层宽度溢出隐藏。

css reset这里未提供,需自行添加。

用到图片一张:num.gif 打开后右键另存为!

3 Comments »

补习:CSS盒模型

2010-03-19 下午 - html/css/xml/xsl - - -

正常盒模型:

实际显示宽度 = 设置的width或height + 边框 + 填充

IE 5.x及更前的版本:

实际显示宽度 = 设置的width或height(边框和填充被包含在里面)

怪异模式的IE8以下版本将使用IE5的盒模型,这点很重要,要记清了!

  盒子宽度未定义且是静态(没有浮动)或者相对定位的,宽度为100%,边框和填充会向内推动,而不是向外扩展。若明确设置宽度为100%,那么则相反。

  绝对定位盒子,没设置宽度,宽度则跟随内容自动缩放,只受相对定位的外层元素的宽度影响而换行,切记body是一个相对定位的盒子。

  浮动盒子,没设置宽度,与绝对定位的盒子相似。不同点是受外层元素的宽度影响而换行(该元素不需要设置相对定位)。

  块级元素,上下边界会重合,以数值较大一方为基准。浮动的块级元素不会有此问题。块级元素不能为内联元素的子元素。

  内联元素,行与行之间的距离不受边界和填充的影响。不过,内联元素也是盒子,也有边距、填充、边框,只是变现得有点“反常”。

  边界值可为负,填充值不可为负。

  下节准备补习:浏览器模式(怪癖模式、标准模式、准标准模式)

No Comments »

笔记:文字排版行缩进

2010-03-10 下午 - html/css/xml/xsl -

做个笔记,具体实现效果看下面图片,偶不知如何用语言来描述了。具体原理偶也说不清了,反正能解决了问题就是王道。

效果就在画圈的地方

text-indent: -12pt; margin-left: 12pt;

具体数值是随行内缩进的距离变动的,上图的距离需要12pt,距离越远数值也就跟随着越大,反之,亦然。

利用li配合list-style-type的decimal来实现固然简单,但是如果需要复制文字再粘贴后保留前面数值,那么就…

No Comments »

不规则形状导航

2009-11-18 下午 - html/css/xml/xsl - -

这样的导航看起来挺复杂,做起来其实挺简单,只是IE6要用到滤镜来确保PNG的透明。万恶的IE6啊!

这里还用到inline-block,IE不支持inline-block,hack给inline,IE6下给定zoom也能解决,再利用负方向的margin值将透明部位重叠。

关键css:

display:inline-block; *display:inline; zoom:1; margin-left:-37px;

预览效果:不规则的导航条

下载文件:点击下载

No Comments »

利用css中transform属性实现3d

2009-07-16 下午 - html/css/xml/xsl - - -

先上PP,容易明白此文内容。

multiple-cubes-css

不需要用到脚本(js),仅css中transform属性(firefox文档, safari文档),适当设置“值”,就能实现很酷的3d效果。

浏览器支持:Safari 3.2+, Google Chrome, Firefox 3.5+

基本是个华而无实的效果了,呵呵!玩玩还是不错的!

html:

<div class="cube">
    
<div class="topFace">
        
<div>Content</div>
    
</div>
    
<div class="leftFace">Content</div>
    
<div class="rightFace">Content</div>
</div>

css:

.cube {position: relative;top: 200px;}
.rightFace,.leftFace,.topFace div {
    
padding: 10px;
    
width: 180px;
    
height: 180px;
}
.rightFace,.leftFace,.topFace {
    
position: absolute;
}
.leftFace {
    -
webkit-transform: skewY(30deg);
    -
moz-transform: skewY(30deg);
    
background-color: #ccc;
}
.rightFace {
    -
webkit-transform: skewY(-30deg);
    -
moz-transform: skewY(-30deg);
    
background-color: #ddd;
    
left: 200px;
}
.topFace div {
    -
webkit-transform: skewY(-30deg) scaleY(1.16);
    -
moz-transform: skewY(-30deg) scaleY(1.16);
    
background-color: #eee;
    
font-size: 0.862em;
}
.topFace {
    -
webkit-transform: rotate(60deg);
    -
moz-transform: rotate(60deg);
    
top: -158px;
    
left: 100px;
}

看个例子:

3d演示文档 – 注意:Safari 3.2+, Google Chrome, Firefox 3.5+才能显示正确效果

本来出处:http://www.fofronline.com/2009-04/3d-cube-using-css-transformations/

2 Comments »

CSS3来啦!做点笔记

2009-06-18 下午 - html/css/xml/xsl - - -

首先在前端开发的角度BS一下IE8,说什么支持CSS3,现在看来,前端开发的同鞋们还得等IE9,甚至可能IE10!因为大部分它还是没有支持,不过还是有个“安慰奖”滴!

CSS3是个好东西,能支持它的浏览器都是好样的!Safari, Firefox, Opera(支持部分)。好久没做笔记了!

note:

  1. 去css3.info看看
  2. 直接预览css带来的新体验
  3. 不喜欢读洋文的,可以看看这里

这个css的升级,着实是帮了前端人员不小的“忙”,可惜的是浏览器们没赶上!不过,众多新加的功能中,个人认为真正有实用价值的也没几个!最有用的,当属“圆角(radius)”,其次“阴影(shadow)”、背景图像大小及数量(多背景)、嵌入字体(洋文的可能用得上)、透明度(opacity)、rgba等效果,剩下的就基本是华而无实了!最重要的,现在IE7、IE8都还和它们没“混熟”,默默期待吧!

1 Comment »

笔记:CSS Selector

2009-02-18 下午 - html/css/xml/xsl - -

这些CSS Selector,目前可能还不适合用在实际项目中。但是将来是肯定能开创一片天地的。只要IE6“倒下”!

CSS2:除IE6外当前主流浏览器都是支持滴!
A > B  匹配A的子元素B
A:first-child  匹配父元素的第一个子元素是A的A
A + B  匹配紧贴着A后面的B
A[property]  匹配含property属性的A
A[property="warning"]  匹配property属性完全等于warning的A(注意“完全等于”)
E[property~="warnging"]  匹配property属性包含warning的A(仅“包含”)

CSS3
A ~ B  匹配A以后的所有B,IE6不支持
A:empty  匹配空元素A,IE6、IE7不支持

详细请进:W3C Specification on CSS3 Selectors

1 Comment »