CSS Card:纯css制作扑克牌

制作扑克的html代码

第一步是制作扑克的html,我的原则是用最少最简洁的代码,不引用任何图片,也许你认为不可能,但是你还是乖乖的看我是如何工作的吧。

建立一个div,赋予两个class属性:cardand suitdiamonds

.代码

  1. <div class="card suitdiamonds">
  2. </div>

往这个div中添加卡片的内容,只需要一个包含字母A的段落标记<P>就可以了。

.代码

  1. <div class="card suitdiamonds">
  2. <p>A</p>
  3. </div>

现在你头脑里要时刻记住,我们的目的不仅仅是要制作一张扑克牌,而且要用最简洁的代码,html部分的代码就只需要这么多了(够简洁吧)。

精心开发5年的UI前端框架!

css代码

css的第一步是规定基本的页面属性,这些属性将被card继承。

.代码

  1. * {margin: 0; padding: 0;}
  2. body {
  3. background: #00a651;
  4. }
  5. .card {
  6. position: relative;
  7. float: left;
  8. margin-right: 10px;
  9. width: 150px;
  10. height: 220px;
  11. border-radius: 10px;
  12. background: #fff;
  13. -webkit-box-shadow: 3px 3px 7px rgba(0,0,0,0.3);
  14. box-shadow: 3px 3px 7px rgba(0,0,0,0.3);
  15. }

就如上面的代码所示,card 的样式非常简单,白色背景,圆角,边框阴影,除了position属性为relative外没有什么特别的。

现在我们给A字母润色一下

.代码

  1. .card p {
  2. text-align: center;
  3. font: 100px/220px Georgia, Times New Roman, serif;
  4. }

先看看效果:

现在看起来是不是已经有卡片的效果了,但是总感觉还缺少些什么-梅花、方块、红桃、黑桃。如果我们要显示这些图形但又不引入图片的话,事情将变得复杂起来,但是我们还是有解决问题的技巧的。精心开发5年的UI前端框架!

考虑到我们不再想要给html部分添加更多的代码,我们引入伪元素before和after来给卡片添加梅花方块这些图形。幸运的是,绝大多数的浏览器都能识别各种种类的特殊符号。

.代码

  1. .suitdiamonds:before, .suitdiamonds:after {
  2. content: "?";
  3. color: #ff0000;
  4. }

我同时用before 和 after这样我就能得到上下两个方块图形,其他图形依葫芦画瓢。

.代码

  1. .suitdiamonds:before, .suitdiamonds:after {
  2. content: "?";
  3. color: #ff0000;
  4. }
  5. .suithearts:before, .suithearts:after {
  6. content: "?";
  7. color: #ff0000;
  8. }
  9. .suitclubs:before, .suitclubs:after {
  10. content: "?";
  11. color: #000;
  12. }
  13. .suitspades:before, .suitspades:after {
  14. content: "?";
  15. color: #000;
  16. }

如果你是一个仔细的人,你应该发现了这些方块梅花的方向貌似搞反了。其实css实现反转也很容易,但是考虑到没人会把屏幕倒过来看这张扑克牌,所以这是不必要的。

我们画好了扑克的符号,还应该修饰大小和合适的定位。方块、梅花、红桃黑桃的字体大小位置摆放以及position属性都是一致的,因此我们最好只写一次。div[class*=‘suit‘]选择器就可以同时选择这四个。(原文的评论里面有人建议单独用一个class来定义,因为作者的这个方法效率上讲要低一些) 精心开发5年的UI前端框架!

.代码

  1. div[class*=‘suit‘]:before {
  2. position: absolute;
  3. font-size: 35px;
  4. left: 5px;
  5. top: 5px;
  6. }
  7. div[class*=‘suit‘]:after {
  8. position: absolute;
  9. font-size: 35px;
  10. right: 5px;
  11. bottom: 5px;
  12. }

下面看看效果

上面我们只是制作了一张图片,现在我想制作一组图片的效果:

.代码

  1. <div class="hand">
  2. <div class="card suitdiamonds">
  3. <p>A</p>
  4. </div>
  5. <div class="card suithearts">
  6. <p>A</p>
  7. </div>
  8. <div class="card suitclubs">
  9. <p>A</p>
  10. </div>
  11. <div class="card suitspades">
  12. <p>A</p>
  13. </div>
  14. </div>

css 精心开发5年的UI前端框架!

.代码

  1. <strong style="border-color: initial; border-width: 0px; padding: 0px; margin: 0px;">.hand {
  2. margin: 50px;
  3. }
  4. /* For modern browsers */
  5. .hand:before,
  6. .hand:after {
  7. content:"";
  8. display:table;
  9. }
  10. .hand:after {
  11. clear:both;
  12. }
  13. /* For IE 6/7 (trigger hasLayout) */
  14. .hand {
  15. zoom:1;
  16. }
  17. .card:hover {
  18. cursor: pointer;
  19. }</strong>

 

接下来我想利用css做出一些有趣的动画效果来:开始的时候只显示一张扑克,当鼠标移上去,扑克会展开,就像你打牌的时候手里握牌的样子。

html

和之前不同的是我增加了spread class属性

.代码

  1. <div class="hand spread">
  2. <div class="card suitdiamonds">
  3. <p>A</p>
  4. </div>
  5. <div class="card suithearts">
  6. <p>A</p>
  7. </div>
  8. <div class="card suitclubs">
  9. <p>A</p>
  10. </div>
  11. <div class="card suitspades">
  12. <p>A</p>
  13. </div>
  14. </div>

精心开发5年的UI前端框架!

css

.代码

  1. <strong style="border-color: initial; border-width: 0px; padding: 0px; margin: 0px;">.spread {
  2. width: 350px;
  3. height: 250px;
  4. position: relative;
  5. }
  6. .spread > .card {
  7. position: absolute;
  8. top: 0;
  9. left: 0;
  10. -webkit-transition: top 0.3s ease, left 0.3s ease;
  11. -moz-transition: top 0.3s ease, left 0.3s ease;
  12. -o-transition: top 0.3s ease, left 0.3s ease;
  13. -ms-transition: top 0.3s ease, left 0.3s ease;
  14. transition: top 0.3s ease, left 0.3s ease;
  15. }</strong>

 

鼠标移上去的效果:

.代码

  1. .spread:hover .suitdiamonds {
  2. -webkit-transform: rotate(-10deg);
  3. -moz-transform: rotate(-10deg);
  4. -o-transform: rotate(-10deg);
  5. -ms-transform: rotate(-10deg);
  6. transform: rotate(-10deg);
  7. }
  8. .spread:hover .suithearts {
  9. left: 30px;
  10. top: 0px;
  11. -webkit-transform: rotate(0deg);
  12. -moz-transform: rotate(0deg);
  13. -o-transform: rotate(0deg);
  14. -ms-transform: rotate(0deg);
  15. transform: rotate(0deg);
  16. }
  17. .spread:hover .suitclubs {
  18. left: 60px;
  19. top: 5px;
  20. -webkit-transform: rotate(10deg);
  21. -moz-transform: rotate(10deg);
  22. -o-transform: rotate(10deg);
  23. -ms-transform: rotate(10deg);
  24. transform: rotate(10deg);
  25. }
  26. .spread:hover .suitspades{
  27. left: 80px;
  28. top: 10px;
  29. -webkit-transform: rotate(20deg);
  30. -moz-transform: rotate(20deg);
  31. -o-transform: rotate(20deg);
  32. -ms-transform: rotate(20deg);
  33. transform: rotate(20deg);
  34. }

再加上点阴影效果 精心开发5年的UI前端框架!

.代码

  1. .spread > .card:hover {
  2. -webkit-box-shadow: 1px 1px 7px rgba(0,0,0,0.4);
  3. box-shadow: 1px 1px 7px rgba(0,0,0,0.4);
  4. }

时间: 2024-11-06 07:30:12

CSS Card:纯css制作扑克牌的相关文章

CSS之纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等)

图形包括基本的矩形.圆形.椭圆.三角形.多边形,也包括稍微复杂一点的爱心.钻石.阴阳八卦等.当然有一些需要用到CSS3的属性,所以在你打开这篇文章的时候,我希望你用的是firefox或者chrome,当然IE也能看一部分的.那好,下面就一起来看看我们是如何用纯CSS来画这些图形的,如果你也觉得很震撼,推荐给你的朋友吧. 1.正方形 最终效果: CSS代码如下: 复制代码 代码如下: #square { width: 100px; height: 100px; background: red; }

【CSS】纯CSS实现三级导航(模板)

以前觉得级联导航实现应该很简单,就是使用css的hover属性来实现就可以了,于是也没有过多地留意实践.可是在最近的面试当中,当被问到这个问题的时候才明白,很多东西不能想当然地以为这样做就可以了,不单只是知道大概的思路就认为OK了,更需要实际的动手能力. 后来就实际操作了级联菜单的实现,借此机会把它弄成一个模板来和大家一起学习. 以下是HTML部分: <!DOCTYPE html> <html> <head> <meta charset="utf-8&q

纯CSS制作的三角箭头

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>纯CSS制作的三角箭头丨kiddy<

纯CSS制作三角(转)

原原文地址:http://www.w3cplus.com/code/303.html 原文地址:http://blog.csdn.net/dyllove98/article/details/8967012 以前写过一篇纯CSS制作带三角的边框,那篇文章是用HTML特殊字符来制作三角的,今天介绍下,如何用 border 来制作三角. html 代码如下: <div class="arrow-up"></div> <div class="arrow-

Div+Css(2):纯Div+Css制作的漂亮点击按钮和关闭按钮

纯Div+Css制作的漂亮点击按钮和关闭按钮,单击点击按钮也有效果.这些都不是图片. 值得注意三点: 1.其中,主要使用了rotate.它能让文字旋转角度 2.还有radius,做圆角专用,很好用的属性.给想我这样的人省去了作图的时间. 3.W3C标准中对CSS3的transition这是样描述的:"CSS的transition允许CSS的属性值在一定的时间区间内平滑地过渡.这种效果可以在鼠标单击.获得焦点.被点击或对元素任何改变中触发,并圆滑地以动画效果改变CSS的属性值." 1 &

分享一个纯css制作的动画化,在网页(手机)加载等的时候可以引用!

CSS代码如下: /* Custom Stylesheet */ body, html { margin: 0; -webkit-font-smoothing: antialiased; background: #68ABAD; text-align: center; } /* DEMO 1 */ .loader1 { margin: 0 auto; height: 20px; width: 20px; position:relative; -webkit-animation:spin 1.5s

纯CSS制作自适应分页条-分享------彭记(019)

纯css制作自适应分页条 效果图: html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-wi

纯CSS小三角制作

无关的知识点 ① background-clip 属性规定背景的绘制区域. 1.padding-box:从padding区域(不含padding)开始向外裁剪背景. 2.border-box:从border区域(不含border)开始向外裁剪背景. 3.content-box:从content区域开始向外裁剪背景. 4.text:从前景内容的形状(比如文字)作为裁剪区域向外裁剪,如此即可实现使用背景作为填充色之类的遮罩效果. ② clip auto:对象无剪切rect(<number>|aut

纯CSS制作二级导航

原文:纯CSS制作二级导航 一.问题描述 做一个类似校园网首页,主要是导航栏的设置,ul默认纵向排列,如何横向排列,同时去掉圆点. 二.问题解决 2.1 先写导航条 用两个ul嵌套,一个ul是横向导航条,另一个是每个小项目下连一个竖向的ul. 1 <ul id="nav_ul"> 2 <li> 3 <a href="#">首页</a> 4 <ul class="nav_ul_ul"> 5