聽說你想要鉆石:gem:?買不起,還是用css來畫一個吧,但你敢送給自己女朋友,不保證不被打。
下午兩點要相親,要不把這個送相親對象?
效果
先看下效果吧,想一想怎么構圖先。

上圖是已經完成的效果。鉆石整體都是由三角形構成,上五下三。上邊是五個等邊三角形,其中有2個是倒扣過來填補三個之間的空缺。下邊是一個等腰三角形和2個對稱的鈍角三角形,差不多就是這樣。(鈍角三角形不是太好理解,至少我沒成功,這里的鈍角三角形是用等腰三角形通過 transform: skew() 實現的)
知識點
這個demo中涉及到了css3 的 transform , css 畫三角形 以及 如何給css畫出的三角形加邊框 ,三角形的邊框構成了鉆石的棱角(白色的線條),預處理語言使用的是 less 。
三角形的邊框:我們知道,三角形本來就是用 border 畫的,給三角形加邊框相當于給 border 加 border ,這個做法肯定行不通。我是這樣做的:畫2個三角形,一個大的一個小的,小的比大的小 1px ,然后小的蓋在大的上面,這樣大三角形就只漏出 1px ,視覺效果就是成為了內部小三角形的邊框線了。參考博文
開始
dom準備
<div id="diamond"> <div class="t"> <div class="common top"></div> <div class="common top"></div> <div class="common top"></div> <div class="common top"></div> <div class="common top"></div> </div> <div class="b"> <div class="common bottom bottom1"></div> <div class="common bottom bottom2"></div> <div class="common bottom bottom3"></div> </div></div>
三角形的個數是上五下三。 請忽略命名,please
樣式
鉆石上部分
先把 common 的樣式定義出來
#diamond { margin: 100px; .t { //直接定義了高度免去了清除浮動 height:30px; } .common { // 公共樣式 position:relative; float:left; width:0; height:0; border-style:solid; // 元素本身做大三角形,襯底成為小三角形的邊框 &:after { // 偽元素定義小三角形 content: ''; position:absolute; border-style:solid; } } div.top { // 鉆石頂部的5個三角形特定樣式 border-width:0 30px 30px; // 三角形大小 border-color:transparent transparent #fff; // 三角形顏色 &:after { // 小三角形 top:1px; // 移動三角形使之蓋在底部的大的三角形 left:-28px; border-width:0 28px 28px; // 小三角形的大小定義 border-color:transparent transparent red; } &:nth-child(2n) { // 第二個第四個三角形倒立。 transform:rotate(180deg); } &:nth-child(n+2) { // 從第二個開始都向左移動30px margin-left: -30px; } }}在樣式中都做了注釋,不再贅述 , 我會說我趕時間去相親? 到這呢效果只有鉆石上面的部分。如下圖:
鉆石下部分
// 上部分的樣式省略了 div.bottom { border-width:90px 30px 0 30px; // 高度適當的高點,這里給了90px border-color:#fff transparent transparent; // 三角形向下,底色白色 &:after { // 同上,做出內部紅色的小三角形,尺寸稍小,漏出白色的“邊框線” border-width:88px 28px 0 28px; border-color:#f00 transparent transparent; top:-89px; left:-28px; } /* * 到這應該是三個等腰三角形 * 第一個第三個三角形應該要是鈍角三角形的。 * 所以要進行一下傾斜操作 */ &.bottom1 { // 底部第一個三角形傾斜轉換 transform: skew(33.5deg); transform-origin: 100% 0; } &.bottom3 { // 底部第三個三角形傾斜轉換,與第一個對稱 transform: skew(-33.5deg); transform-origin: 100% 0; } } // 數學不好,這個角度是我試了幾次試出來的,數學好的可以算下呢,啊哈哈哈注釋里都寫了。 不贅述不贅述,別問為什么。
差不多就是這樣了,上一下效果。

我會說這就是一開始的效果圖? 總覺得差點什么,duangduang 加一下特效

buling buling的效果,啊哈哈哈哈哈哈。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答