簡単なスライド効果ページをCSSで実現
21617 ワード
また1つのよくある面接問題で、探して知らないで、探してびっくりして、とても面白い書き方がたくさんあります.
第一反応はCSS 3のanimationを利用することである.ただし、ブラウザと互換性を保つためには、各ブラウザの接頭辞(「chromeとsafira:-webkit-」、「firefox:-moz-」、「opera:-o-」)の下で使用するanimationの各プロパティを付けてください.animation-name(アニメーション名、引用符で包む必要がある)animation-duration(アニメーション持続時間、例えば:20 s)animaiton-iteration-count(ループ回数、「infinite」はワイヤレスループ)もう一つ重要な「keyframes(キーフレーム)」と書かれています.書式は:@keyframes「アニメーション名」{}「{}」内で設定内容によって「0%」から「100%」まで順次書きます.注意「0%」は必ずパーセンテージを省略してはいけません
次の書き方も面白いです.これは背景の透明度を変えます
labelとaの特性を利用した2つの書き方もあります.完全にスライドではないので、先に貼ってみてください.
第一反応はCSS 3のanimationを利用することである.ただし、ブラウザと互換性を保つためには、各ブラウザの接頭辞(「chromeとsafira:-webkit-」、「firefox:-moz-」、「opera:-o-」)の下で使用するanimationの各プロパティを付けてください.animation-name(アニメーション名、引用符で包む必要がある)animation-duration(アニメーション持続時間、例えば:20 s)animaiton-iteration-count(ループ回数、「infinite」はワイヤレスループ)もう一つ重要な「keyframes(キーフレーム)」と書かれています.書式は:@keyframes「アニメーション名」{}「{}」内で設定内容によって「0%」から「100%」まで順次書きます.注意「0%」は必ずパーセンテージを省略してはいけません
<html>
<head>
<title>title>
<style type="text/css">
.myDiv {
width:300px;
height: 300px;
margin: 20px auto;
-webkit-animation-name: 'loop';
-webkit-animation-duration: 10s;
-webkit-animation-iteration-count: infinite;
}
@-webkit-keyframes "loop"{
0% { background: url("images/m15.jpg") no-repeat;}
25% { background: url("images/m10.jpg") no-repeat;}
50% { background: url("images/m11.jpg") no-repeat;}
75% { background: url("images/m12.jpg") no-repeat;}
100% {background: url("images/m15.jpg") no-repeat;}
}
style>
head>
<body>
<div class="myDiv">div>
body>
html>
次の書き方も面白いです.これは背景の透明度を変えます
<head>
<meta charset="utf-8" />
<title>css3 title>
<meta content="" name="description" />
<meta content="" name="author" />
<style type="text/css">
.cb-slideshow{
width:400px;
height:400px;
margin:0 auto;
z-index:0;
}
.cb-slideshow li{
position:absolute;
width:400px;
height:400px;
background-size:cover;
background-repeat: none;
opacity:0;
z-index:0;
-webkit-animation: loops 36s linear infinite 0s;
}
.cb-slideshow li:nth-child(1){
background-image: url(images/m10.jpg);
}
.cb-slideshow li:nth-child(2){
background-image: url(images/m11.jpg);
-webkit-animation-delay: 6s;
}
.cb-slideshow li:nth-child(3){
background-image: url(images/m12.jpg);
-webkit-animation-delay: 12s;
}
.cb-slideshow li:nth-child(4){
background-image: url(images/m15.jpg);
-webkit-animation-delay: 18s;
}
.cb-slideshow li:nth-child(5){
background-image: url(images/m16.jpg);
-webkit-animation-delay: 24s;
}
.cb-slideshow li:nth-child(6){
background-image: url(images/m17.jpg);
-webkit-animation-delay: 30s;
}
@-webkit-keyframes "loops" {
0% {
opacity: 0;
}
8% {
opacity:1;
}
17% {
opacity:1;
}
25% {
opacity:0.5;
}
100% {
opacity: 0;
}
}
style>
head>
<body>
<ul class="cb-slideshow">
<li>li>
<li>li>
<li>li>
<li>li>
<li>li>
<li>li>
ul>
body>
labelとaの特性を利用した2つの書き方もあります.完全にスライドではないので、先に貼ってみてください.
<html>
<head>
<style>
img {
display: none;
width: 100px;
height: 100px;
}
input:checked + img {
display: block;
}
input {
position: absolute;
left: -9999px;
}
label {
cursor: pointer;
}
style>
head>
<body>
<div id="cont">
<input id="img1" name="img" type="radio" checked="checked">
<img src="a.png">
<input id="img2" name="img" type="radio">
<img src="b.png">
div>
<div id="nav">
<label for="img1"> label>
<label for="img2"> label>
div>
body>
html>
<html>
<head>
<style>
#cont {
position: relative;
height: 100px;
}
img {
position: absolute;
width: 100px;
height: 100px;
z-index: 1;
}
img:first-child,
img:target {
z-index: 2;
}
style>
head>
<body>
<div id="cont">
<img id="img1" src="a.jpg">
<img id="img2" src="b.jpg">
div>
<div>
<a href="#img1">onea>
<a href="#img2">twoa>
div>
body>
html>