CSS動畫實例:圖文切換

      先準備好一張圖片,在頁面中放置一個類名爲container的層做爲圖文容器,在該層中再定義兩個層:一個類名爲image-box的層放置圖片,一個類名爲text-desc的層放置文本描述,HTML代碼描述以下:css

<div  class="container">html

  <div class="image-box">瀏覽器

       <img src="hhl.jpg" alt="黃鶴樓">ide

  </div>spa

  <div class="text-desc">3d

     <h3>黃鶴樓公園</h3>code

     <p>黃鶴樓是國家首批AAAAA級景區,中國旅遊勝地四十佳,武漢市的城市標誌。位於武昌蛇山之巔,有近1800餘年的歷史,爲「江南三大名樓」之首,有「天下江山第一樓」美譽。在中國歷史上留下大量傳說故事和膾炙人口的詩篇。<br>orm

網址:<a href="http://www.cnhhl.com/">http://www.cnhhl.com/</p>htm

  </div>blog

</div>

      分別爲這3個層和層中元素標籤img、h三、p等定義CSS樣式規則以下:

   .container

   {

     margin: 0 auto;

     width: 500px;

     height: 350;

     position: relative;

     overflow: hidden;

     border: 4px solid rgba(255, 0, 0, 0.9);

   } 

   img

   {

     max-width: 100%;

     vertical-align: middle;

   }

   h3

   {

     font-size: 20px;

     margin: 5px 0 10px;

     text-align:center;

   }

   p

   {

     line-height: 20px;

     font-size: 16px;

     margin-bottom: 15px;

   }

   .text-desc

   {

     position: absolute;

     left: 0;

     top: 0;

     background-color: #fff;

     height: 100%;

     opacity: 0;

     width: 100%;

     padding: 20px;

   }

      現要實現鼠標懸停時圖文切換的效果。初始時,容器中顯示圖片,文本被隱藏,當鼠標懸停於圖片上時,圖片略微放大,文本從頂部向下顯示出來,覆蓋圖片(圖片做爲背景在文本後面);當鼠標移離時,文本被隱藏,圖片顯示出來,效果如圖1所示。

 

圖1 圖文切換效果:從頂部向下推出

      這個鼠標懸停效果能夠採用CSS來實現,主要是對鼠標懸停的圖片和文本描述的相關CSS屬性進行設置便可。

      文本從頂部向下推出,實際上可當作鼠標未懸停時,文本top屬性爲-100%,懸停時,top爲0。相關CSS屬性設置爲:

   .container img

   {

     transition: 0.5s;

   }

   .container:hover img

   {

     transform: scale(1.2);

   }

   .container .text-desc

   {

     opacity: 0.9;

     top: -100%;

     transition: 0.5s;

     padding: 45px 20px 20px;

   }

   .container:hover .text-desc

   {

     top: 0;

   }

      完整的HTML代碼以下。在這裏咱們將CSS的定義與HTML頁面描述放在一個文件中,主要是方便讀者直接複製代碼保存到一個HTML文件中便可運行顯示效果。實際上,能夠將有關的CSS定義放在一個XXX.css樣式表文件中,而後在HTML文件中經過語句

       <link rel="stylesheet" type="text/css" href="css/XXX.css">

引用這個樣式表。

<!DOCTYPE HTML> 
<html> 
<head>
<title>圖文切換</title>
<style>
   * 
   {
     margin: 0; 
     padding: 0; 
     box-sizing: border-box;
   }
   .container 
   { 
     margin: 0 auto; 
     width: 500px; 
     height: 350; 
     position: relative; 
     overflow: hidden; 
     border: 4px solid rgba(255, 0, 0, 0.9); 
   }  
   img 
   {
     max-width: 100%; 
     vertical-align: middle;
   }
   h3 
   {
     font-size: 20px; 
     margin: 5px 0 10px; 
     text-align:center;
   }
   p 
   {
     line-height: 20px; 
     font-size: 16px; 
     margin-bottom: 15px;
   }
   .text-desc 
   {
     position: absolute; 
     left: 0; 
     top: 0; 
     background-color: #fff; 
     height: 100%; 
     opacity: 0; 
     width: 100%; 
     padding: 20px;
   }
   .container img 
   {
     transition: 0.5s; 
     position: relative; 
     width: 100%; 
     right: 0;
   }
    .container:hover img 
   {
     right: 50%;
   }
   .container .text-desc 
   {
     opacity: 0; 
     transition: 0.5s; 
     transform: rotateY(90deg); 
     transform-origin: right center 0; 
     left:auto;
     right:0;
     width: 50%; 
     padding: 18px 10px;
   }
   .container:hover .text-desc
   {
     opacity: 1; 
     transform: rotateY(0deg); 
   }

</style>
</head>
<body>
<div  class="container">
  <div class="image-box">
       <img src="hhl.jpg" alt="黃鶴樓">
  </div>
  <div class="text-desc">
     <h3>黃鶴樓公園</h3>
     <p>黃鶴樓是國家首批AAAAA級景區,中國旅遊勝地四十佳,武漢市的城市標誌。位於武昌蛇山之巔,有近1800餘年的歷史,爲「江南三大名樓」之首,有「天下江山第一樓」美譽。在中國歷史上留下大量傳說故事和膾炙人口的詩篇。<br>
網址:<a href="http://www.cnhhl.com/">http://www.cnhhl.com/</p>
  </div>
</div>
</body> 
</html>
View Code

      若修改上面HTML文件中的「top: -100%; 」爲「top: 100%;」,其他部分保持不變,則在瀏覽器中呈現出如圖2所示的切換效果,此時文本內容從底部向上推出。

 

圖2  圖文切換效果:從底部向上推出

      若修改上面HTML文件中的「top: -100%; 」爲「left: -100%;」,「top:0;」爲「left:0;」,其他部分保持不變,則在瀏覽器中呈現出如圖3所示的切換效果,此時文本內容從左向右推出。

 

圖3  圖文切換效果:從左向右推出

      若修改上面HTML文件中的「top: -100%; 」爲「left: 100%;」,「top:0;」爲「left:0;」,其他部分保持不變,則在瀏覽器中呈現出如圖4所示的切換效果,此時文本內容從右向左推出。

 

圖4  圖文切換效果:從右向左推出

若修改CSS樣式中的.container .text-desc 和 .container:hover .text-desc的定義以下:

   .container .text-desc

   {

      opacity: 0.9;

      transition: 0.5s; 

      top: 50%;

      left: 50%;

      width: 0;

      height: 0;

      overflow: hidden;

      padding: 0;

   }

   .container:hover .text-desc

   {

       top: 0;

       left: 0;

       width: 100%;

       height: 100%;

       padding: 45px 20px 20px;

   }

則在瀏覽器中呈現出如圖5所示的文本盒狀展開收縮的切換效果。

 

圖5  圖文切換效果:盒狀展開收縮

若修改CSS樣式中的相關切換效果設置的CSS屬性定義以下:

   .container img

   {

     transition: 1s;

   }

    .container:hover img

   {

     opacity: 0;

     transform: translateY(-100%);

   }

   .container .text-desc

   {

      z-index: -1;

      transition: 1s;

      transform: rotateX(80deg);

      transform-origin: center bottom 0;

      padding: 45px 20px 20px; 

   }

   .container:hover .text-desc

   {

     transform: none;

     opacity: 1;

   }

則在瀏覽器中呈現出如圖6所示的切換效果。

 

圖6  圖文切換效果

若修改CSS樣式中的相關切換效果設置的CSS屬性定義以下:

   .container img

   {

     transition: 0.5s;

   }

    .container:hover img

   {

     transform: scale(1.1);

   }

   .container .text-desc

   {

     transition: 0.5s;

     left: 0;

     top: 0;

     width: 100%;

     height: 100%;

     transform: scale(0); 

     backface-visibility: hidden;

   }

   .container:hover .text-desc

   {

     opacity: 1;

     transform: scale(1);

     border-radius: 20%;

   }

      則在瀏覽器中呈現出如圖7所示的圖文切換效果。

 

圖7  圖文切換效果:盒狀展開爲圓角(1)

       若再將上面修改的樣式定義中「border-radius: 20%;」修改成「border-radius: 50% 0 50% 0;」,則瀏覽器中呈現出如圖8所示的圖文切換效果。

 

圖8  圖文切換效果:盒狀展開爲圓角(2)

若修改CSS樣式中的相關切換效果設置的CSS屬性定義以下:

   .container img

   {

     transition: 0.5s;

     transform: rotateY(360deg) scale(1, 1);

   }

    .container:hover img

   {

     transform: rotateY(0deg) scale(0, 0);

   }

   .container .text-desc

   {

     transform: rotateY(0deg) scale(0, 0);

     transition: 0.5s;

     opacity: 0;

     padding: 45px 20px 20px;

   }

   .container:hover .text-desc

   {

     transform: rotateY(360deg) scale(1, 1); 

     opacity: 1;

   }

則在瀏覽器中呈現出如圖9所示的圖文切換效果。

 

圖9  圖文切換效果

若修改CSS樣式中的相關切換效果設置的CSS屬性定義以下:

   .container img

   {

     transition: 0.5s;

     position: relative;

     width: 100%;

     left: 0;

   }

    .container:hover img

   {

     left: 50%;

   }

   .container .text-desc

   {

     opacity: 0;

     transition: 0.5s;

     transform: rotateY(90deg);

     transform-origin: left center 0;

     left:0;

     width: 50%;

     padding: 18px 10px;

   }

   .container:hover .text-desc

   {

     opacity: 1;

     transform: rotateY(0deg);

   }

則在瀏覽器中呈現出如圖10所示的圖文切換效果。

 

圖10  圖文切換效果:左文右圖

      若再將上面CSS樣式定義中的4個單詞「left」修改成「right」,而且在「width: 50%; 」以前加上一句「left:auto;」,則在瀏覽器中呈現出如圖11所示的圖文切換效果。

 

圖11  圖文切換效果:左圖右文

      上面的這些圖文切換效果能夠在一個頁面中佈置多個圖片,並選用所需的效果。例如,能夠編寫以下的HTML文件。

<!DOCTYPE HTML> 
<html> 
<head>
<title>圖文切換</title>
<style>
   * 
   {
     margin: 0; 
     padding: 0; 
     box-sizing: border-box;
   }
   .container 
   { 
     margin: 0 auto; 
     max-width: 1060px; 
   }  
   img 
   {
     max-width: 100%; 
     vertical-align: middle;
   }
   h3 
   {
     font-size: 20px; 
     margin: 3px 0 6px; 
   }
   p 
   {
     line-height: 20px; 
     font-size: 14px; 
     margin-bottom: 15px;
   }
   ul 
   {
     width: 100%; 
     position: relative; 
     overflow: hidden; 
     border: 4px solid rgba(255, 0, 0, 0.9);
   }
   li 
   {
     float: left; 
     width: 31.33%; 
     margin: 10px 1%; 
     list-style: none;
   }
   .text-desc 
   {
     position: absolute; 
     left: 0; 
     top: 0; 
     background-color: #fff; 
     height: 100%; 
     opacity: 0; 
     width: 100%; 
     padding: 10px;
   }
   .btn 
   {
     display: inline-block; 
     padding: 5px 10px; 
     font-size: 14px; 
     color: #fff; 
     border: 2px solid #4d92d9; 
     background-color: #4d92d9; 
     text-decoration: none; 
     transition: 0.4s;
   }
   .btn:hover 
   {
     background-color: transparent; 
     color: #4d92d9; 
     transition: 0.4s;
   }
   .port 
   {
     width: 100%; 
     position: relative; 
     overflow: hidden; 
     border: 4px solid rgba(255,0, 255, 0.9);
   }

   .port.effect1 img 
   {
     transition: 0.5s;
   }
   .port.effect1:hover img 
   {
     transform: scale(1.2);
   }
   .port.effect1 .text-desc 
   {
     opacity: 0.9; 
     top: -100%; 
     transition: 0.5s; 
     padding: 45px 20px 20px;
   }
   .port.effect1:hover .text-desc
   {
     top: 0;
   }

    .port.effect2 img 
   {
     transition: 0.5s; 
     transform: rotateY(360deg) scale(1, 1);
   }
    .port.effect2:hover img 
   {
     transform: rotateY(0deg) scale(0, 0);
   }
    .port.effect2 .text-desc 
   {
     transform: rotateY(0deg) scale(0, 0); 
     transition: 0.5s; 
     opacity: 0; 
     padding: 45px 20px 20px;
   }
   .port.effect2:hover .text-desc
   {
     transform: rotateY(360deg) scale(1, 1);  
     opacity: 1;
   }
   .port.effect3 img 
   {
     transition: 0.5s; 
     position: relative; 
     width: 100%; 
     right: 0;
   }
    .port.effect3:hover img 
   {
     right: 50%;
   }
   .port.effect3 .text-desc 
   {
     opacity: 0; 
     transition: 0.5s; 
     transform: rotateY(90deg); 
     transform-origin: right center 0; 
     left:auto;
     right:0;
     width: 50%; 
     padding: 18px 10px;
   }
   .port.effect3:hover .text-desc
   {
     opacity: 1; 
     transform: rotateY(0deg); 
   }
</style>
</head>
<body>
<div  class="container">
  <ul>
    <li>
       <div class="port effect1">
         <div class="image-box">
            <img src="mltc.png" alt="木蘭天池">
         </div>
         <div class="text-desc">
        <h3>木蘭天池</h3>
            <p>木蘭天池景區,是國家5A級景區,也是國家森林公園,木蘭天池-相傳是木蘭將軍的外婆家,是木蘭將軍小時候生活、習武的地方。</p>
              <a href="http://www.mltc.cn/" class="btn">進入官網</a>
         </div>
      </div>
    </li>
    <li>
       <div class="port effect2">
         <div class="image-box">
            <img src="mls.jpg" alt="木蘭山">
         </div>
         <div class="text-desc">
        <h3>木蘭山</h3>
            <p>荊楚名嶽-木蘭山位於黃陂區北部,是流芳千古的木蘭將軍故里,因木蘭將軍而得名。是國家5A級景區,國家地質公園、木蘭文化之源、千年宗教聖地。</p>
              <a href="http://www.whmls.cn/" class="btn">進入官網</a>
         </div>
      </div>
    </li>
    <li>
       <div class="port effect3">
         <div class="image-box">
            <img src="mlyws.png" alt="木蘭雲霧山">
         </div>
         <div class="text-desc">
        <h3>木蘭雲霧山</h3>
            <p>享有「西陵勝地、楚北名區、陂西垂障、漢地祖山」美譽的雲霧山,景區佔地25平方千米。</p>
              <a href="http://www.yunwushan.cn/" class="btn">進入官網</a>
         </div>
      </div>
    </li>
  </ul>
</div>
</body> 
</html>
View Code

      在瀏覽器中打開包含這段HTML代碼的html文件,能夠呈現如圖12所示的圖文切換效果。

 

圖12  多個圖文切換效果

相關文章
相關標籤/搜索