CSS Card:純css製作撲克牌,csscard製作撲克牌
製作撲克的html代碼
第一步是製作撲克的html,我的原則是用最少最簡潔的代碼,不引用任何圖片,也許你認為不可能,但是你還是乖乖的看我是如何工作的吧。
建立一個div,賦予兩個class屬性:cardand suitdiamonds
.代碼
- <div class="card suitdiamonds">
- </div>
往這個div中添加卡片的內容,只需要一個包含字母A的段落標記<P>就可以了。
.代碼
- <div class="card suitdiamonds">
- <p>A</p>
- </div>
現在你頭腦裡要時刻記住,我們的目的不僅僅是要製作一張撲克牌,而且要用最簡潔的代碼,html部分的代碼就只需要這麼多了(夠簡潔吧)。
精心開發5年的UI前端架構!
css代碼
css的第一步是規定基本的頁面屬性,這些屬性將被card
繼承。
.代碼
- * {margin: 0; padding: 0;}
-
- body {
- background: #00a651;
- }
-
- .card {
- position: relative;
- float: left;
- margin-right: 10px;
- width: 150px;
- height: 220px;
- border-radius: 10px;
- background: #fff;
- -webkit-box-shadow: 3px 3px 7px rgba(0,0,0,0.3);
- box-shadow: 3px 3px 7px rgba(0,0,0,0.3);
- }
就如上面的代碼所示,card 的樣式非常簡單,白色背景,圓角,邊框陰影,除了position
屬性為relative外沒有什麼特別的。
現在我們給A字母潤色一下
.代碼
- .card p {
- text-align: center;
- font: 100px/220px Georgia, Times New Roman, serif;
- }
先看看效果:
現在看起來是不是已經有卡片的效果了,但是總感覺還缺少些什麼-梅花、方塊、紅桃、黑桃。如果我們要顯示這些圖形但又不引入圖片的話,事情將變得複雜起來,但是我們還是有解決問題的技巧的。精心開發5年的UI前端架構!
考慮到我們不再想要給html部分添加更多的代碼,我們引入虛擬元素before和after來給卡片添加梅花方塊這些圖形。幸運的是,絕大多數的瀏覽器都能識別各種種類的特殊符號。
.代碼
- .suitdiamonds:before, .suitdiamonds:after {
- content: "";
- color: #ff0000;
- }
我同時用before 和 after這樣我就能得到上下兩個方塊圖形,其他圖形依葫蘆畫瓢。
.代碼
- .suitdiamonds:before, .suitdiamonds:after {
- content: "";
- color: #ff0000;
- }
-
- .suithearts:before, .suithearts:after {
- content: "";
- color: #ff0000;
- }
-
- .suitclubs:before, .suitclubs:after {
- content: "";
- color: #000;
- }
-
- .suitspades:before, .suitspades:after {
- content: "";
- color: #000;
- }
如果你是一個仔細的人,你應該發現了這些方塊梅花的方向貌似搞反了。其實css實現反轉也很容易,但是考慮到沒人會把螢幕倒過來看這張撲克牌,所以這是不必要的。
我們畫好了撲克的符號,還應該修飾大小和合適的定位。方塊、梅花、紅桃黑桃的字型大小位置擺放以及position屬性都是一致的,因此我們最好唯寫一次。div[class*=
'suit'
]
選取器就可以同時選擇這四個。(原文的評論裡面有人建議單獨用一個class來定義,因為作者的這個方法效率上講要低一些) 精心開發5年的UI前端架構!
.代碼
- div[class*='suit']:before {
- position: absolute;
- font-size: 35px;
- left: 5px;
- top: 5px;
- }
-
- div[class*='suit']:after {
- position: absolute;
- font-size: 35px;
- right: 5px;
- bottom: 5px;
- }
下面看看效果
上面我們只是製作了一張圖片,現在我想製作一組圖片的效果:
.代碼
- <div class="hand">
-
- <div class="card suitdiamonds">
- <p>A</p>
- </div>
-
- <div class="card suithearts">
- <p>A</p>
- </div>
-
- <div class="card suitclubs">
- <p>A</p>
- </div>
-
- <div class="card suitspades">
- <p>A</p>
- </div>
-
- </div>
css 精心開發5年的UI前端架構!
.代碼
- <strong style="border-color: initial; border-width: 0px; padding: 0px; margin: 0px;">.hand {
- margin: 50px;
- }
-
- /* For modern browsers */
- .hand:before,
- .hand:after {
- content:"";
- display:table;
- }
-
- .hand:after {
- clear:both;
- }
-
- /* For IE 6/7 (trigger hasLayout) */
- .hand {
- zoom:1;
- }
-
- .card:hover {
- cursor: pointer;
- }</strong>
接下來我想利用css做出一些有趣的動畫效果來:開始的時候只顯示一張撲克,當滑鼠移上去,撲克會展開,就像你打牌的時候手裡握牌的樣子。
html
和之前不同的是我增加了spread class屬性
.代碼
- <div class="hand spread">
-
- <div class="card suitdiamonds">
- <p>A</p>
- </div>
-
- <div class="card suithearts">
- <p>A</p>
- </div>
-
- <div class="card suitclubs">
- <p>A</p>
- </div>
-
- <div class="card suitspades">
- <p>A</p>
- </div>
-
- </div>
精心開發5年的UI前端架構!
css
.代碼
- <strong style="border-color: initial; border-width: 0px; padding: 0px; margin: 0px;">.spread {
- width: 350px;
- height: 250px;
- position: relative;
- }
-
- .spread > .card {
- position: absolute;
- top: 0;
- left: 0;
- -webkit-transition: top 0.3s ease, left 0.3s ease;
- -moz-transition: top 0.3s ease, left 0.3s ease;
- -o-transition: top 0.3s ease, left 0.3s ease;
- -ms-transition: top 0.3s ease, left 0.3s ease;
- transition: top 0.3s ease, left 0.3s ease;
- }</strong>
滑鼠移上去的效果:
.代碼
- .spread:hover .suitdiamonds {
- -webkit-transform: rotate(-10deg);
- -moz-transform: rotate(-10deg);
- -o-transform: rotate(-10deg);
- -ms-transform: rotate(-10deg);
- transform: rotate(-10deg);
- }
-
- .spread:hover .suithearts {
- left: 30px;
- top: 0px;
- -webkit-transform: rotate(0deg);
- -moz-transform: rotate(0deg);
- -o-transform: rotate(0deg);
- -ms-transform: rotate(0deg);
- transform: rotate(0deg);
- }
-
- .spread:hover .suitclubs {
- left: 60px;
- top: 5px;
- -webkit-transform: rotate(10deg);
- -moz-transform: rotate(10deg);
- -o-transform: rotate(10deg);
- -ms-transform: rotate(10deg);
- transform: rotate(10deg);
- }
-
- .spread:hover .suitspades{
- left: 80px;
- top: 10px;
- -webkit-transform: rotate(20deg);
- -moz-transform: rotate(20deg);
- -o-transform: rotate(20deg);
- -ms-transform: rotate(20deg);
- transform: rotate(20deg);
- }
再加上點陰影製作效果 精心開發5年的UI前端架構!
.代碼
- .spread > .card:hover {
- -webkit-box-shadow: 1px 1px 7px rgba(0,0,0,0.4);
- box-shadow: 1px 1px 7px rgba(0,0,0,0.4);
- }
跪純CSS 網頁選項卡 製作方法
你的是什麼瀏覽器,我沒有發現不相容呀!!!
這個例子用到的都是通用標記嘛!!!
==========================================
CSS做選項卡,簡單地講就是,先定義,再引用。
你也可以照著你說的這個例子自己做做看,這個沒有多少難度。
=======================================================
PS:對“相容”不是這麼理解的,這個例子中的CSS定義模組,十分明確各個模組的功能和用途,而最終的效果是引用這些模組來實現的,你隨便去刪“模組”,肯定出問題嘛。就像JS你隨便刪語句不能運行一樣,但這不是“相容”問題!!
怎用純css製作動態網頁效果?
你說所的效果,幾乎都是用hover觸發做出來的,所以ie6幾乎做不出來這個效果。
比如<li><img class=pic1 src="test.jpg" /><img class=pic2 src="test2.jpg" /></li>
<style>
.pic2{display:none;}
li:hover .pic2{display:block;}
</style>
設定pic2為隱藏,當滑鼠觸發li:hover屬性時設定其為可見就行了。