`
huoquan
  • 浏览: 27309 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类

CSS Card:纯css制作扑克牌

阅读更多

制作扑克的html代码

 

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

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

<div class="card suitdiamonds">
</div>

 

 

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

<div class="card suitdiamonds">
  <p>A</p>
</div>

 

 

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

可以500%提高开发效率的前端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;
}

 

 

先看看效果:

screenshot

 

现在看起来是不是已经有卡片的效果了,但是总感觉还缺少些什么-梅花、方块、红桃、黑桃。如果我们要显示这些图形但又不引入图片的话,事情将变得复杂起来,但是我们还是有解决问题的技巧的。可以500%提高开发效率的前端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来定义,因为作者的这个方法效率上讲要低一些) 可以500%提高开发效率的前端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;
}

 

 

下面看看效果

screenshot

 

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

<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 可以500%提高开发效率的前端UI框架!

.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;
}

 

 

screenshot

 

接下来我想利用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>
 可以500%提高开发效率的前端UI框架!

 

 

css

.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;
}
 

 

鼠标移上去的效果:

.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);
}

 

 

再加上点阴影效果 可以500%提高开发效率的前端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);
}

 

 

 

screenshot
0
0
分享到:
评论

相关推荐

    jQuery+CSS3扑克洗牌和扑克牌翻转动画特效

    4. `project_front_bg.png`、`project_card_bg.png`、`project_back_bg.png`、`project_card_bot_bg.png`:这些都是图像资源,可能作为扑克牌的正面、背面或者部分细节的背景图。 实现这个特效的基本步骤包括: 1. ...

    jQuery css3扑克洗牌和扑克牌翻转效果代码

    接着,我们可以使用jQuery选择器选取扑克牌的DOM元素,例如通过类名`.card`来选取所有扑克牌。 对于扑克牌的洗牌效果,我们可以利用JavaScript的数组方法`shuffle()`,将牌堆中的元素随机打乱。这里可以使用Fisher-...

    css3鼠标悬停扑克牌图片翻转动画特效

    在本文中,我们将深入探讨如何使用CSS3的`transform`属性来创建一款鼠标悬停时扑克牌图片翻转的动画特效。这个特效适用于各种交互式设计,如卡片式布局、游戏界面或者产品展示等,能为用户体验增添动态的视觉吸引力...

    jQuery+CSS3扑克洗牌和扑克牌翻转动画特效.zip

    而项目中包含的三张背景图片(project_front_bg.png、project_card_bg.png、project_back_bg.png、project_back_bg.png、project_card_bot_bg.png)分别用于呈现扑克牌的正面、背面以及边角细节,这些图片的合理使用...

    jQuery扑克牌翻转特效.zip

    1. CSS3变换:扑克牌翻转的视觉效果主要依赖于CSS3的`transform`属性。通过设置`transform: rotateY(180deg)`,可以让元素在Y轴上进行180度旋转,模拟翻转效果。 2. jQuery事件绑定:jQuery提供`click`事件绑定,...

    css3鼠标悬停扑克牌图片翻转动画特效.zip

    《CSS3与jQuery结合实现扑克牌翻转动画特效详解》 在网页设计中,动态效果总是能吸引用户的注意力,提高用户体验。本篇文章将详细介绍如何利用CSS3和jQuery技术,实现一款鼠标悬停时扑克牌翻转的动画特效,这对于...

    CSS3扑克牌悬停翻转特效

    【CSS3扑克牌悬停翻转特效】是一种利用CSS3的transform属性来创建的互动式网页元素动画效果,常用于增强用户体验,使静态的网页内容变得更加生动有趣。在这个特效中,当用户将鼠标悬停在扑克牌上时,扑克牌会模拟...

    js扑克牌翻牌配对网页小游戏代码.zip

    `card.js`则可能用于创建和管理单个扑克牌对象,包括牌的状态(未翻转、已翻转、已匹配)和动画效果。JavaScript代码可能会使用事件监听器(如`addEventListener`)来响应用户的点击行为,以及DOM操作(如`...

    js+css3鼠标滑过图片随机切换展示效果

    在这个特效中,我们主要利用CSS3的过渡(transition)、动画(animation)以及3D变换(transform)来创建扑克牌翻转效果。 2. **HTML结构** 首先,我们需要创建一个包含多张图片的HTML结构。每张图片将被包裹在一...

    54张扑克牌

    在IT行业中,尤其是在游戏开发、数据可视化或者教学演示等领域,使用扑克牌的图像资源是非常常见的。"54张扑克牌"这个主题涉及到的是一个包含所有标准扑克牌的图像集合,这些图片已经按照一定的规范整理好,方便...

    jQuery扑克牌切换焦点图代码.zip

    总的来说,“jQuery扑克牌切换焦点图代码”是一种创新的实现方式,它结合了jQuery的易用性和CSS3的动态效果,使得网页的焦点图不再仅仅是静态的展示,而是成为了一个与用户互动的视觉焦点。通过理解并实践这个代码,...

    jQuery扑克牌翻转特效特效代码

    在这个扑克牌翻转效果中,我们需要选择扑克牌的元素,例如`&lt;div&gt;`或`&lt;img&gt;`标签,通过CSS类名或者ID来区分每张牌。例如,我们可以为每张牌分配一个类名`card`,然后使用`$('.card')`来选取所有扑克牌。 接下来,...

    基于jQuery插件实现的多种模拟扑克牌切换动画特效源码.zip

    例如,我们可以创建一个名为`flipCard`的方法,用于处理扑克牌的翻转效果。以下是一个基础的jQuery插件模板: ```javascript (function($) { $.fn.flipCard = function(options) { // 插件的主要代码 }; })...

    canvas 特效 扑克发牌魔术发牌.zip

    在这个“canvas 特效 扑克发牌魔术发牌”项目中,我们利用这些技术实现了扑克牌发牌的动画效果,通过精心设计的绘制逻辑和动画帧控制,为用户带来了魔术般的视觉体验。同时,CSS的运用提升了整体界面的美观度和用户...

    jQuery扑克牌翻牌配对消除游戏源码.zip

    2. **事件绑定**:`click`事件常用于处理用户点击扑克牌的行为,如`$("#card").click(function() {...})`。 3. **CSS操作**:通过`.addClass()`、`.removeClass()`和`.toggleClass()`来切换扑克牌的状态,如翻转...

    基于jQuery实现的类似扑克牌洗牌样式切换的图片特效.zip

    在本文中,我们将深入探讨如何使用jQuery来实现一个类似扑克牌洗牌的图片特效。这个效果可以用于增强网站的用户体验,特别是在游戏、娱乐或者展示类的网页设计中。通过模拟扑克牌的翻转和切换,我们可以创建出一种...

    扑克牌

    在创建扑克牌效果时,可能需要用到类选择器(如`.card`)、ID选择器(如`#hearts`)以及伪类选择器(如`:hover`)来分别定义扑克牌的基本样式、不同花色的样式以及鼠标悬停时的动态效果。 其次,盒模型是理解CSS...

    14款CSS3卡片堆叠切换动画特效.zip

    有的则利用层叠上下文(z-index)配合变换,使卡片像扑克牌一样依次滑入滑出,形成连贯的视觉流动。这些动画不仅增加了用户操作的趣味性,也提升了整体界面的互动性。 在JS特效-图片相册的场景下,卡片堆叠切换动画...

Global site tag (gtag.js) - Google Analytics