图片/图形

Material Design风格卡片切换UI设计

阿里云


这是一款效果非常酷的 Material Design 风格卡片切换 UI 设计效果。该卡片切换效果使用 jQuery 和 CSS3 来完成,它在切换卡片的时候页面的背景颜色会随着卡片的主要颜色而改变,并且卡片会随着图片内容而改变高度。

HTML 结构

该 Material Design 风格卡片 UI 设计的 HTML 结构如下,每一张卡片可以使用 slide-color 来指定相应页面的背景颜色。

也想出现在这里?联系我们
创客主机
  1. <div class="card">
  2.   <div class="slides">
  3.     <div slide-id="1" slide-color="#D18B49" class="slide active">
  4.       <div class="thumbnail"><img src="1.jpg"/></div>
  5.       <h1 class="title">Slide 1</h1>
  6.       <p class="description">Slide 1 Content</p>
  7.     </div>
  8.     <div slide-id="2" slide-color="#542F13" class="slide">
  9.       <div class="thumbnail"><img src="2.jpg"/></div>
  10.       <h1 class="title">Slide 2</h1>
  11.       <p class="description">Slide 2 Content</p>
  12.     </div>
  13.     <div slide-id="3" slide-color="#A5AAAE" class="slide">
  14.       <div class="thumbnail"><img src="3.jpg"/></div>
  15.       <h1 class="title">Slide 3</h1>
  16.       <p class="description">Slide 3 Content</p>
  17.     </div>
  18.   </div>
  19.   <div class="footer">
  20.     <a id="prev" href="#" ripple="" ripple-color="#666666" class="btn">Prev</a>
  21.     <a id="next" href="#" ripple="" ripple-color="#666666" class="btn">Next</a>
  22.   </div>
  23. </div>

CSS 样式

卡片的主要 CSS 样式如下:

  1. .card {
  2.   background: #FFFFFF;
  3.   max-width: 400px;
  4.   margin: 100px auto;
  5.   border-radius: 12px;
  6.   box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
  7.   box-sizing: border-box;
  8.   padding: 48px;
  9.   text-align: center;
  10. }
  11.  
  12. .slides {
  13.   position: relative;
  14.   overflow: hidden;
  15.   -webkit-transition: 0.5s ease;
  16.   transition: 0.5s ease;
  17. }
  18.  
  19. .slide {
  20.   position: absolute;
  21.   top: 0;
  22.   left: 0;
  23.   opacity: 0;
  24.   visibility: hidden;
  25.   -webkit-transition: 0.5s ease;
  26.   transition: 0.5s ease;
  27. }
  28.  
  29. .slide.active {
  30.   opacity: 1;
  31.   visibility: visible;
  32. }
  33.  
  34. .thumbnail { margin: 0 0 48px; }
  35.  
  36. .title {
  37.   margin: 0 0 12px;
  38.   color: #D18B49;
  39.   font-size: 24px;
  40.   -webkit-transition: 0.5s ease;
  41.   transition: 0.5s ease;
  42. }
  43.  
  44. .description { margin: 0 0 48px; }
  45.  
  46. .footer {
  47.   display: -webkit-box;
  48.   display: -webkit-flex;
  49.   display: -ms-flexbox;
  50.   display: flex;
  51.   -webkit-box-orient: horizontal;
  52.   -webkit-box-direction: normal;
  53.   -webkit-flex-direction: row;
  54.   -ms-flex-direction: row;
  55.   flex-direction: row;
  56.   -webkit-box-pack: justify;
  57.   -webkit-justify-content: space-between;
  58.   -ms-flex-pack: justify;
  59.   justify-content: space-between;
  60.   margin: 0 -12px -12px;
  61. }

JavaScript

该 Material Design 风格卡片 UI 设计使用 jQuery 来处理卡片切换事件。其中 calcslideHeight()函数用于计算当前激活的卡片的高度,animateContentColor()函数用于修改当前图片的父容器页面的背景色。然后为前后导航按钮绑定鼠标点击事件,为相应的元素切换相应的 class 类。

  1. var getslideHeight = $('.slide.active').height();
  2.  
  3. $('.slides').css({
  4.   height: getslideHeight
  5. });
  6.  
  7. function calcslideHeight() {
  8.   getslideHeight = $('.slide.active').height();
  9.  
  10.   $('.slides').css({
  11.     height: getslideHeight
  12.   });
  13. }
  14.  
  15. function animateContentColor() {
  16.   var getslideColor = $('.slide.active').attr('slide-color');
  17.  
  18.   $('body').css({
  19.     background: getslideColor
  20.   });
  21.  
  22.   $('.title').css({
  23.     color: getslideColor
  24.   });
  25.  
  26.   $('.btn').css({
  27.     color: getslideColor
  28.   });
  29. }
  30.  
  31. var slideItem = $('.slide'),
  32.   slideCurrentItem = slideItem.filter('.active');
  33.  
  34. $('#next').on('click', function(e) {
  35.   e.preventDefault();
  36.  
  37.   var nextItem = slideCurrentItem.next();
  38.  
  39.   slideCurrentItem.removeClass('active');
  40.  
  41.   if (nextItem.length) {
  42.  
  43.     slideCurrentItem = nextItem.addClass('active');
  44.   } else {
  45.     slideCurrentItem = slideItem.first().addClass('active');
  46.   }
  47.  
  48.   calcslideHeight();
  49.   animateContentColor();
  50. });
  51.  
  52. $('#prev').on('click', function(e) {
  53.   e.preventDefault();
  54.  
  55.   var prevItem = slideCurrentItem.prev();
  56.  
  57.   slideCurrentItem.removeClass('active');
  58.  
  59.   if (prevItem.length) {
  60.     slideCurrentItem = prevItem.addClass('active');
  61.   } else {
  62.     slideCurrentItem = slideItem.last().addClass('active');
  63.   }
  64.  
  65.   calcslideHeight();
  66.   animateContentColor();
  67. });

点击导航按钮时的按钮点击波效果的 JavaScript 代码如下:

  1. $('[ripple]').on('click', function(e) {
  2.   var rippleDiv = $('<div class="ripple" />'),
  3.     rippleSize = 60,
  4.     rippleOffset = $(this).offset(),
  5.     rippleY = e.pageY - rippleOffset.top,
  6.     rippleX = e.pageX - rippleOffset.left,
  7.     ripple = $('.ripple');
  8.  
  9.   rippleDiv.css({
  10.     top: rippleY - (rippleSize / 2),
  11.     left: rippleX - (rippleSize / 2),
  12.     background: $(this).attr("ripple-color")
  13.   }).appendTo($(this));
  14.  
  15.   window.setTimeout(function() {
  16.     rippleDiv.remove();
  17.   }, 1900);
  18. });

Material Design 风格卡片切换 UI 设计

已有 385 人购买
查看演示升级 VIP立刻购买

演示地址 下载地址
收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!