最近在寫一個律師推薦前臺的網站,在上面搜索框這里出現了問題,我想把搜索的圖標放在搜索框里面,但是弄了半天都不大如意……
話不多說,我們直接進入主題 :
其實就把輸入框與后面的圖標一起放在一個div里面,然后將輸入框的border設置為0px,最后設置div的border為最終的外邊框
我們最直接上代碼:HTML:
<div class="search">
<form action="http://baidu.com">
<input type="text" placeholder="請輸入查找的律師或專長">
<span>
<a href="#"><img src="img/icon1.png" alt=""></a>
</span>
</form>
</div>
CSS:這里是設置外面整個div的樣式
.search {
width: 250px;
height: 35px;
border: 1px solid white;
border-radius: 30px;
}
這里是設置里面的輸入框的長寬、boder為0px、里面的字體大小、點擊不會亮邊框(outline:none)設置透明度這里使用rgba(),最后一個屬性就是透明度(在0-1之間 )
可以看作一種特殊字體,其展示的是圖標,而不再是文字,其擁有字體的特性,比如大小、顏色、透明效果、陰影等,字體圖標加載快、不變形。也可以看作是矢量格式的圖標。
(1)iconmoon字體圖標庫:https://icomoon.io/app
(2)阿里iconfont字體圖標庫:https://www.iconfont.cn/
(3)font-awesome字體圖標庫:
以iconmoon為例
(1)選擇需要的圖標并下載
1)在fonts文件夾下有四種類型的字體文件,每種字體文件兼容瀏覽器的種類不同
a).tff格式(TrueTypeFont),美國蘋果公司和微軟公司共同開發的,在Windows和Mac操作系統中為默認字體;IE9+、FireFox3.5+、Chrome4+、Safari3+、Opera10+、IOS Mobile中的Safari4.2+等瀏覽器支持該字體。
b).woff格式(Web Open Font Format-Web開放字體格式),是一種網頁所采用的字體格式標準,使用zlib壓縮,文件大小一般比TTF小40%;IE9+、FireFox3.6+、Chrome6+、Safari5.1+、Opera11.1+等瀏覽器支持該字體。
c).eot格式(Embedded Open Type-嵌入式OpenType ),微軟設計用來在網頁使用的字體格式,是OpenType字體的壓縮格式,IE專用,IE4+支持該字體。
d).svg格式(Scalable Vector Graphics-可縮放的矢量圖形),它是一種用XML定義的語言,用來描述二維矢量及矢量/柵格圖形;Chrome4+、Safari3.1+、Opera10+、IOS Mobile中Safari3.2+等瀏覽器支持該字體。
其他字體
e).otf格式(Open Type Font),Microsoft和Adobe公司開發的,.otf格式比.ttf更為強大,可以把PostScript字體嵌入到TrueType中。
2)字體轉換
https://www.fontke.com/tool/convfont/
(2)字體圖標的引入
1)把字體放到項目的相應位置
將下載解壓后的fonts文件夾放到項目路徑下
2)在html頁面中引入字體
利用CSS的@font-face屬性,引入外部字體;
在style.css文件中有如下代碼,為固定用法,注意url中字體路徑,其它可以不變。
在html的style標簽中引入如下代碼:
@font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot?8l3wc0');
src: url('fonts/icomoon.eot?8l3wc0#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?8l3wc0') format('truetype'),
url('fonts/icomoon.woff?8l3wc0') format('woff'),
url('fonts/icomoon.svg?8l3wc0#icomoon') format('svg');
font-weight: normal;
font-style: normal;
font-display: block;
}
3)為元素用該字體
span {
font-family: "icomoon";
}
4)為元素添加內容
復制demo.html中需要的圖標,如下,將其作為元素的內容。
<span>?</span>
(3)新增字體圖標的引入
當利用iconmoon選用字體圖標時,如果有新增的字體圖標需要加入,則需要用到.json文件,如下,在原先選擇的基礎上,再選擇新選擇的字體圖標,然后再下載使用。
在進行前端開發時,圖標庫的使用是一項必須掌握的技巧,目前流行的圖標庫有fontawesome,iconfont等,只需要引入到項目中,然后使用對應的class,就會得到對應的圖標。
但是你們有沒有想過,如果是自己的話該怎么去實現這些圖標呢?今天我們就來看看一些稍微復雜的圖標是如何使用純CSS3實現吧。
文中的代碼已經放到github上了,感興趣的同學自取。
https://github.com/zhouxiongking/article-pages/blob/master/articles/border/complexFigure.html
CSS3
我們可以先來看看稍微復雜的圖標的樣子。
圖標庫
從圖標中可以看出,都是平時很常用的正確,錯誤,方向鍵,放大,縮小,開鎖,解鎖等。
我們從中抽取幾個,慢慢分析它們是如何實現的吧。
水杯的圖標如下所示。
水杯圖標
我們對水杯圖標進行拆分,分為杯身和杯柄兩個部分。
杯身中的白色長方形就是一個div,設置寬度和高度。
杯身的四周為黑色都是通過border實現,border-bottom比其他三個放向都要大。
杯身的下方是圓角,通過border-radius設置,border-radius的右下和左下方向設置相同的值。
通過上述的分析,我們可以得到杯身部分的CSS代碼。
杯身CSS代碼
杯柄通過偽元素:before實現。
杯柄設置為絕對定位,修改right值讓中間出現一個空白。
調整杯柄位置的寬度,只需要和杯身重疊即可。
杯柄右上角和右下角的border-radius設置為特定的值,展現成圓角的樣子。
通過以上的分析,我們可以得到杯柄部分的CSS代碼。
杯柄CSS代碼
首先我們來看看心形圖案的樣子。
心形圖案
接下來我們同樣將整個圖案拆分來看,分成左右兩個部分,我們將上述圖案換成兩種不同顏色就一目了然了。
拆分圖案
從圖案中可以看出,它實際是由兩個相同的圖行旋轉不同的角度構成,相同的元素部分,可以通過設置border-radius值來實現。
我們將左右兩個半邊的形狀分別通過:before和:after來實現,原始的的div形狀的CSS屬性則很簡單,只需要設置相對位置和寬度為0即可。
基本CSS屬性
然后看看:before和:after共有的屬性,主要是保證為元素部分的定位為絕對定位,然后設置border-radius的值, 保證上半部分是圓角。
共有CSS屬性
然后是關鍵的兩半邊各自的CSS屬性。左側的圖形距左邊應該為0,所以left: 0,右側的圖形距右側為0,所以right: 0。
各有的CSS屬性
同時左右兩側圖案需要進行旋轉,這里我們選擇旋轉48度,這是為什么呢?
很多人一下子可能會想到旋轉45度,我們來看看旋轉45度時的樣子。
旋轉45度
從圖形中可以看出,兩側有棱角,整個圖案就顯得不標準,當旋轉超過45度時,棱角的部分就會被里面的圖案遮住。
所以這里我們選擇旋轉48度,達到最終的效果。
最終效果圖
今天這篇文章我們使用純CSS3的屬性畫出了一個杯子和心形兩個稍微復雜點的圖案,其實其它圖案也是類似的,只要我們能將其拆分,每個部分獨立實現,再組合就可以達到圖標庫的效果了。
大家也可以自己動手實現一下噢~
*請認真填寫需求信息,我們會在24小時內與您取得聯系。