以下有些會用到一點點 jQuery,直接提供 jQuery 載入的 CDN:(請放在 body 結束標籤之前)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
指定檔名:hamburger_icon.html
用 button 標籤做一個 hamburger icon:
切換 class (使用 jQuery):
// jQuery 版本:DOM 載入完成之後執行
$(function(){
/* 按鈕狀態的切換 */
$("button.hamburger_icon").on("click", function(){
$(this).toggleClass("-on");
});
});
切換 class (使用 JavaScript):
// JavaScript 版本:DOM 載入完成之後執行
document.addEventListener('DOMContentLoaded', function(){
var hamburger_icon = document.getElementsByClassName("hamburger_icon")[0];
hamburger_icon.addEventListener("click", function(){
if( hamburger_icon.classList.contains("-on") ){
hamburger_icon.classList.remove("-on");
}else{
hamburger_icon.classList.add("-on");
}
});
});
結果示意:
{% embed url="https://youtu.be/6rJP4TZF4SU" %}
提供 html:
<button type="button" class="hamburger_icon">
<span class="-hr -top"></span>
<span class="-hr -middle"></span>
<span class="-hr -bottom"></span>
</button>
參考作法:
{% embed url="https://codepen.io/carlos411/pen/rNBErJy" %}
指定檔名:hamburger_icon_with_plugin.html
自行挑選一個效果,學會套用。只需要看 Usage 的 1 ~ 4 點即可。
切換 class (使用 jQuery):
$(function(){
// hamburger icon 的切換
$("button.hamburger").on("click", function(){
$(this).toggleClass("is-active");
});
});
參考作法:
{% embed url="https://codepen.io/carlos411/pen/xvVLyR" %}
指定檔名:nav_switch.html
提供 html:
<button type="button" class="btn_switch">導覽列縮合按鈕</button>
<nav class="main_nav">
<ul class="nav_list">
<li><a href="#">首頁</a></li>
<li><a href="#">關於我們</a></li>
<li><a href="#">分類頁</a></li>
</ul>
</nav>
提供 jQuery 寫法:
$(function(){
// 點擊按鈕,選單縮放
$("button.btn_switch").on("click", function(){
$("nav.main_nav").slideToggle();
});
});
結果示意:
{% embed url="https://youtu.be/8Q7obn9a9hU" %}
參考作法:
{% embed url="https://codepen.io/carlos411/pen/XvGKQz" %}
指定檔名:rwd_with_flexbox.html
說明:
- 768px 以上為桌機版;767px 以下為行動版。
- 左欄及右欄寬度各 200px,剩餘空間寬度都給中間欄。
- 限定使用 Flexbox 來製作三欄式 RWD 排版。
結果示意:
{% embed url="https://youtu.be/ABX7rKgLeXo" %}
提供 HTML 結果如下:
<div class="all_container">
<div>
左側<br>
另一行
</div>
<div>
中間
</div>
<div>
右側
</div>
</div>
參考作法:
{% embed url="https://codepen.io/carlos411/pen/MWWJQvQ" %}
指定檔案:full_width_image.html
區塊滿版,高度250px,裡面一張圖片,如下結構:
<div class="img_block">
<img src="https://picsum.photos/id/866/800/400">
</div>
並設定在 575px 以下行動版時,佔滿的區域比例為寬高1:1(即正方形)。
結果示意:
{% embed url="https://youtu.be/jQq3ocGodaw" %}
參考作法:
{% embed url="https://codepen.io/carlos411/pen/JjjELmR" %}
指定檔名:full_scene.html
製作三個區塊,寬高都佔滿版,留意高度。分別任意指定不同的背景色以便觀察。
給定 html 如下:
<section class="scene scene_1">
scene1
</section>
<section class="scene scene_2">
scene2
</section>
<section class="scene scene_3">
scene3
</section>
結果示意:
{% embed url="https://youtu.be/Fwd58Kpvrdc" %}
參考作法:
{% embed url="https://codepen.io/carlos411/pen/XWWLXWL" %}
指定檔名:ten_items_scroll.html
請用實際手機看,觀察:滑動是不是卡卡的,加上某個 css 讓其變得滑順。
較舊版的可能滑動會有卡卡的現象,加上以下即可:
ul.ul_list{
-webkit-overflow-scrolling: touch;
}
提供 html 如下:
<div class="list_container">
<ul class="ul_list">
<li class="item">
<div class="item_block">
<h1>標題1</h1>
<img src="https://picsum.photos/id/500/200/100">
</div>
</li>
<li class="item">
<div class="item_block">
<h1>標題2</h1>
<img src="https://picsum.photos/id/500/200/100">
</div>
</li>
<li class="item">
<div class="item_block">
<h1>標題3</h1>
<img src="https://picsum.photos/id/500/200/100">
</div>
</li>
<li class="item">
<div class="item_block">
<h1>標題4</h1>
<img src="https://picsum.photos/id/500/200/100">
</div>
</li>
<li class="item">
<div class="item_block">
<h1>標題5</h1>
<img src="https://picsum.photos/id/500/200/100">
</div>
</li>
<li class="item">
<div class="item_block">
<h1>標題6</h1>
<img src="https://picsum.photos/id/500/200/100">
</div>
</li>
<li class="item">
<div class="item_block">
<h1>標題7</h1>
<img src="https://picsum.photos/id/500/200/100">
</div>
</li>
<li class="item">
<div class="item_block">
<h1>標題8</h1>
<img src="https://picsum.photos/id/500/200/100">
</div>
</li>
<li class="item">
<div class="item_block">
<h1>標題9</h1>
<img src="https://picsum.photos/id/500/200/100">
</div>
</li>
<li class="item">
<div class="item_block">
<h1>標題10</h1>
<img src="https://picsum.photos/id/500/200/100">
</div>
</li>
</ul>
</div>
結果示意:
{% embed url="https://youtu.be/AUN5E3y7eao" %}
參考作法:
{% embed url="https://codepen.io/carlos411/pen/QWWdrbX" %}
指定檔名:content_fixed.html
觀察廣告區塊的介面效果:
{% embed url="https://youtu.be/abtFFCpcw5U" %}
請做出如上廣告區塊的排版效果。
結果示意:
{% embed url="https://youtu.be/jNe2XwPi3uo" %}
提供 html:
<div class="top_block"></div>
<div class="middle_block">
<div class="middle_content">
<a href="https://tw.yahoo.com" target="_blank">這是連結</a>
<img src="https://i.picsum.photos/id/645/500/400.jpg" class="the_img">
</div>
</div>
<div class="bottom_block"></div>
註:此種效果建議用在行動版上,且內容不要太多。以免超出整個 100vh 的螢幕高度,以致於看不到內容。
提供部份 CSS:
* {
box-sizing: border-box;
}
body{
margin: 0;
}
div.top_block{
background-color: blue;
height: 200vh;
position: relative;
}
div.bottom_block{
background-color: gray;
height: 200vh;
position: relative;
}
/* 中間區域 */
div.middle_block{
border: 1px solid orange;
height: 100vh;
}
div.middle_block div.middle_content{
border: 1px solid red;
width: 100%;
padding: 10px;
}
img.the_img{
width: 100%;
}
請試著加上一點 CSS 達成效果。
可從這個 codepen 開始實作:
{% embed url="https://codepen.io/carlos411/pen/gOaPWgZ" %}
參考作法:
{% embed url="https://codepen.io/carlos411/pen/ZEGdXdW" %}
指定檔名:submenu_fadein_fadeout.html
結果示意:
{% embed url="https://youtu.be/8KetZGnnLjs" %}
提供 html:
<div class="div_block">
<p class="para">有次選單</p>
<div class="inner_block">
<ul>
<li>項目一</li>
<li>項目二</li>
<li>項目三</li>
</ul>
</div>
</div>
<div>
<p>下方內容</p>
<img src="https://picsum.photos/seed/picsum/200/300">
</div>
參考這個 codepen,沒有淡入淡出的方式:
{% embed url="https://codepen.io/carlos411/pen/JjYGYbx" %}
改成淡入淡出。
參考作法:
{% embed url="https://codepen.io/carlos411/pen/xxwKqWQ" %}