1 2 3 4 5 6 | < div class = "tip" > Tips Test< br />Hello Tips! < span class = "tip-out" > < span class = "tip-in" ></ span > </ span > </ div > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | .tip{ /*注意边框的颜色和背景色很重要!*/ border : 6px solid gray ; background-color :skyblue; /*宽和高根据需要设置,ps:需要配合tip-top和tip-in位置来进行设置!*/ width : 420px ; height : 420px ; /*下面仅仅是对tips里面内容的设置,so可以说不相关!*/ line-height : 210px ; font-weight : bold ; text-align : center ; } .tip-out,.tip-in{ /*首先设置边框宽度(需要经过计算过!),然后设置其颜色为透明:这个很重要。 至于边框的样式可以自己调试修改下看效果如何,因为我这个没怎么测试 */ border : 100px solid transparent ; /*然后设置上边框,主要是设置颜色 颜色跟tips内颜色一致,这个就是tips下面的那个角,所以要一致才行 */ border-top-color :skyblue; position : absolute ; /*这个的作用是将span对象呈递为内联对象,但是对象的内容作为块对象呈递。 旁边的内联对象会被呈递在同一行内 其实这个在这边的作用不大,如果将span改为div,那么这个就不需要设置了。 更确切的说这个其实是不用写的,因为貌似将一个 对象设置为position:absolute后,这个对象就成了块级元素了, so其实这个可以去掉。当然作为学习,so放在这边了! 最后发现的一个问题是:块级元素默认是占用整个屏幕宽度的(当然可以设置 其宽&高为0),但如果设置了为absolute的话,其边框内部的空间就默认 为0*0了(如果没有放内容),这就是为什么要改为块级元素的原因了。 */ display :inline- block ; /*可选项目,其实不需要的了……*/ } /*下面是分别设置tip-out,tip-in的位置以便组合成tips下的角, 然后设置tip-out的颜色为tips的边框色,以衔接tips的边框*/ .tip-out{ border-top-color : gray ; top : 440px ; left : 40px ; } .tip-in{ top : -110px ; left : -100px ; } |
由于时间问题,先上代码!!以后在进行注解!当作是复习吧!反正是通过边框来实现的。
分析:
原本我以为是通过border-radius来实现tips上的尖角效果的,但是发现border-radius设置的再大,最终就变成了一个很圆的圆而已……
后来找了 js无图片实现tip提示效果 3K完美搞定 这个例子后才知道其原理(不过可能还有别的实现方法吧!呵呵,学无止尽,方法也有很多的吧!),主要还是通过边框来实现的。
其中最重要的一点就是,首先不能为行内元素而是要块级元素,然后就是绝对定位方式(不占用原来的空间,然后可以任意定位),最后就是设置边框了(原理所在)。主要的两句是
1 2 | border : 100px solid transparent ; border-top : 100px solid skyblue; |
首先就是要设置所有边框为透明,然后设置需要显示的边框&颜色。其实主要是为了显示一个三角形出来,然后两个三角形进行叠加后就能出现所需要的效果了!
那么三角形是如何出现的呢?首先一个条件就是边框内部的高&宽为0!!不然不会出现尖尖的角的!因为由于内部空间为0,所以四条边框重叠了,然后进行透明&不透明设置(如上设置)后,就能出现三角形了,因为举例来说上边框&其相邻的左边框在交界处是以对角线来划分作为分界线的,所以在设置不同颜色的时候会有尖角出现!这个的测试代码如下!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | < div ></ div > < style > div{ height:0px;width:0px; /*display:inline-block;另一种选择*/ border-style:solid; border-width:100px; border-left-color:#666; border-top-color:#444; border-right-color:#222; border-bottom-color:#000; } </ style > |
效果如下
由于上面的tips测试代码的宽&高太大,不好演示,所以我做了调整,测试代码如下,很小了,这个也没有计算的太好,所以有点不均匀(貌似在ff下显示上回有点问题,有些郁闷)
Hello Tips!
鼠标移到这边来!
终于写完了,虽然不是很美观,但是学习了,貌似图片也许是不错的选择吧!
2011年10月23日 01:47
沒附上例子……
我看主要就是transparent和inline-block這兩個東東要解釋了吧?
2011年10月23日 13:20
@λ: 慢慢来,附上的代码就是我自己写的测试例子啊!! 是根据我前面发的那个文章来写的测试例子啦! 不着急,我等会就解释下!
2011年10月26日 12:34
@wind: -_-...感觉分析之前的很难一下看懂,先把下面的三角形效果的原理放到前面说比较好。
2012年3月28日 19:42
这篇文章有说弄三角形的,只设左右和底部的颜色就可以了
http://coolshell.cn/articles/6913.html