element/examples/pages/index.vue

209 lines
4.9 KiB
Vue
Raw Normal View History

2016-08-23 19:15:15 +08:00
<style scoped>
2016-08-31 11:25:02 +08:00
.actor {
&.typing:after {
content: '|';
animation: blink 500ms infinite;
}
}
2016-08-23 19:15:15 +08:00
.banner {
height: 420px;
background-color: #20a0ff;
color: #fff;
margin-bottom: 130px;
.container {
position: relative;
}
img {
position: absolute;
top: 15px;
right: -105px;
}
}
.banner-desc {
padding-top: 80px;
font-size: 46px;
position: relative;
z-index: 10;
h2 {
font-size: 80px;
margin: 0;
}
}
.cards {
margin: 0 auto 110px;
width: 960px;
.container {
@utils-clearfix;
padding: 0;
margin: 0 -11px;
width: auto;
}
li {
width: 33.33333%;
padding: 0 11px;
box-sizing: border-box;
float: left;
list-style: none;
}
}
.card {
height: 430px;
width: 100%;
background:#ffffff;
border:1px solid #eaeefb;
border-radius:5px;
box-sizing: border-box;
text-align: center;
position: relative;
transition: bottom .3s;
bottom: 0;
img {
margin: 66px auto 60px;
}
h3 {
margin: 0;
font-size: 18px;
color: #1f2f3d;
font-weight: normal;
}
p {
font-size: 14px;
color: #99a9bf;
padding: 0 25px;
}
a {
height: 53px;
line-height: 52px;
font-size: 14px;
color: #20a0ff;
text-align: center;
border: 0;
border-top: 1px solid #eaeefb;
padding: 0;
cursor: pointer;
width: 100%;
position: absolute;
bottom: 0;
left: 0;
background-color: #fff;
border-radius: 0 0 5px 5px;
transition: all .3s;
text-decoration: none;
display: block;
&:hover {
background-color: #20a0ff;
color: #fff;
background: #20a0ff;
}
}
&:hover {
bottom: 6px;
2016-08-30 19:30:58 +08:00
box-shadow: 0px 6px 18px 0px rgba(232,237,250,0.50);
2016-08-23 19:15:15 +08:00
}
}
2016-08-31 11:25:02 +08:00
@keyframes blink {
from { opacity: 0; }
to { opacity: 1; }
}
2016-08-23 19:15:15 +08:00
</style>
2016-08-22 17:42:04 +08:00
<template>
2016-08-23 19:15:15 +08:00
<div>
<div class="banner">
<div class="container">
<div class="banner-desc">
<h2>Element</h2>
2016-08-31 11:25:02 +08:00
<div id="line1" class="actor"></div>
<div id="line2" class="actor"></div>
2016-08-23 19:15:15 +08:00
</div>
<img src="~examples/assets/images/banner-bg.svg" alt="Element">
</div>
</div>
<div class="cards">
<ul class="container">
<li>
<div class="card">
<img src="~examples/assets/images/zujian.svg" alt="">
<h3>指南</h3>
<p>了解设计指南帮助产品设计人员搭建逻辑清晰结构合理且高效易用的产品</p>
<router-link
active-class="active"
to="/guide/design"
exact>查看详情
</router-link>
</div>
</li>
<li>
<div class="card">
<img src="~examples/assets/images/zhinan.svg" alt="">
<h3>组件</h3>
<p>使用组件 Demo 快速体验交互细节;使用前端框架封装的代码帮助工程师快速开发</p>
<router-link
active-class="active"
2016-08-30 19:30:58 +08:00
to="/component/layout"
2016-08-23 19:15:15 +08:00
exact>查看详情
</router-link>
</div>
</li>
<li>
<div class="card">
<img src="~examples/assets/images/ziyuan.svg" alt="">
<h3>资源</h3>
<p>下载相关资源用其快速搭建页面原型或高保真视觉稿提升产品设计效率</p>
<router-link
active-class="active"
to="/resource"
exact>查看详情
</router-link>
</div>
</li>
</ul>
</div>
</div>
2016-08-22 17:42:04 +08:00
</template>
<script>
2016-08-31 11:25:02 +08:00
import theaterJS from 'theaterjs';
2016-08-23 19:15:15 +08:00
2016-08-22 17:42:04 +08:00
export default {
2016-08-23 19:15:15 +08:00
mounted() {
2016-08-31 11:25:02 +08:00
function typing(theater) {
theater
.addScene('产品设计师', 600, -5, 800)
.addScene('交互设计师', 600, -5, 500)
.addScene('视觉设计师', 600, -5, 700)
.addScene('产品经理', 600, -4, 600)
.addScene('前端工程师', 600, -5, 800)
.addScene((done) => {
typing(theater);
done();
});
}
var theater = theaterJS();
theater
.on('type:start, erase:start', function() {
theater.getCurrentActor().$element.classList.add('typing');
})
.on('type:end, erase:end', function() {
theater.getCurrentActor().$element.classList.remove('typing');
});
theater
.addActor('line1', { speed: 0.8, accuracy: 0.6 })
.addActor('line2')
.addScene(400)
.addScene('line1:快速搭建页面', 600)
.addScene('line2:只为守护世界和平', 800, -6, '让你少加班', 1000)
.addScene('line2:只为这样的你: ', 600)
.addScene((done) => {
typing(theater);
done();
});
2016-08-23 19:15:15 +08:00
}
2016-08-22 17:42:04 +08:00
};
</script>