<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css">
<title>サイドバー</title>
</head>
<body>
<header>
<button class="hamburger" onclick="toggleSidebar()">
<span class="hamburger-line"></span>
<span class="hamburger-line"></span>
<span class="hamburger-line"></span>
</button>
</header>
<aside class="sidebar">
<nav>
<ul>
<li><a href="#">リンク1</a></li>
<li><a href="#">リンク2</a></li>
<li><a href="#">リンク3</a></li>
</ul>
</nav>
</aside>
<main>
<h1>メインコンテンツ</h1>
<p>ここにメインコンテンツが入ります。</p>
</main>
<script src="scripts.js"></script>
</body>
</html>
styles.css
body {
margin: 0;
font-family: Arial, sans-serif;
}
header {
display: flex;
justify-content: flex-end;
padding: 10px;
background-color: #333;
}
.hamburger {
display: flex;
flex-direction: column;
justify-content: space-between;
width: 30px;
height: 20px;
background: none;
border: none;
cursor: pointer;
}
.hamburger-line {
width: 100%;
height: 3px;
background-color: #fff;
}
.sidebar {
position: fixed;
top: 0;
left: -250px;
width: 250px;
height: 100%;
background-color: #f4f4f4;
transition: left 0.3s;
}
.sidebar.open {
left: 0;
}
main {
padding: 50px;
}
scripts.js
function toggleSidebar() {
const sidebar = document.querySelector('.sidebar');
sidebar.classList.toggle('open');
}
<html>
<head>
<style>
/* ハンバーガーアイコンのスタイル */
.hamburger {
width: 30px;
height: 30px;
position: fixed;
top: 10px;
left: 10px;
cursor: pointer;
}
/* ハンバーガーアイコンの線のスタイル */
.hamburger-line {
width: 100%;
height: 4px;
background-color: black;
margin: 5px auto;
transition: all 0.3s;
}
/* サイドバーのスタイル */
.sidebar {
width: 200px;
height: 100%;
background-color: lightgray;
position: fixed;
top: 0;
left: -200px; /* サイドバーを画面外に隠す */
transition: all 0.3s;
}
/* サイドバーの中身のスタイル */
.sidebar-content {
padding: 20px;
}
/* サイドバーが展開されたときのハンバーガーアイコンの線の変形 */
.hamburger.active .hamburger-line:nth-child(1) {
transform: translateY(10px) rotate(45deg);
}
.hamburger.active .hamburger-line:nth-child(2) {
opacity: 0;
}
.hamburger.active .hamburger-line:nth-child(3) {
transform: translateY(-10px) rotate(-45deg);
}
/* サイドバーが展開されたときのサイドバーの位置 */
.sidebar.active {
left: 0; /* サイドバーを画面内に表示する */
}
</style>
</head>
<body>
<!-- ハンバーガーアイコン -->
<div class="hamburger" id="hamburger">
<div class="hamburger-line"></div>
<div class="hamburger-line"></div>
<div class="hamburger-line"></div>
</div>
<!-- サイドバー -->
<div class="sidebar" id="sidebar">
<div class="sidebar-content">
<h1>サイドバー</h1>
<p>ここにサイドバーの中身を書く。</p>
<ul>
<li>メニュー1</li>
<li>メニュー2</li>
<li>メニュー3</li>
</ul>
</div>
</div>
<!-- JavaScript -->
<script>
// ハンバーガーアイコンとサイドバーの要素を取得
var hamburger = document.getElementById("hamburger");
var sidebar = document.getElementById("sidebar");
// ハンバーガーアイコンをクリックしたときの処理
hamburger.addEventListener("click", function() {
// ハンバーガーアイコンとサイドバーにactiveクラスを付け外しする
hamburger.classList.toggle("active");
sidebar.classList.toggle("active");
});
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="CSSsource/hamburger.css">
<link rel="stylesheet" href="CSSsource/logo.css">
<script src = "JSsource/jquery-3.7.0.min.js"></script>
<title>カウントダウンタイマー</title>
<style>
h2 {
color: #333;
text-align: center;
}
.container {
max-width: 400px;
margin-top: 5%;
margin-left: auto;
margin-right: auto;
padding: 20px;
background-color: #fff;
border-radius: 5px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
label {
display: block;
font-weight: bold;
margin-bottom: 5px;
}
input[type="range"] {
width: 100%;
}
button {
display: block;
width: 100%;
padding: 10px;
margin-top: 10px;
font-weight: bold;
text-align: center;
color: #fff;
background-color: #5dbcd2;
border: none;
border-radius: 5px;
cursor: pointer;
}
button:hover {
background-color: #4ba2b6;
}
#countdown {
text-align: center;
font-size: 24px;
margin-top: 20px;
}
</style>
<script>
var timer;
var totalTime;
var paused = true;
function settingCountdown() {
if (paused) {
var hours = parseInt(document.getElementById("hoursInput").value);
var minutes = parseInt(document.getElementById("minutesInput").value);
totalTime = hours * 3600 + minutes * 60; // 入力された時間と分数を秒に変換
// タイマーが既に実行中の場合は停止
if (timer) {
clearInterval(timer);
}
timer = setInterval(updateCountdown, 1000); // 1秒ごとに更新
}
}
function updateCountdown() {
var hours = Math.floor(totalTime / 3600);
var minutes = Math.floor((totalTime % 3600) / 60);
var seconds = totalTime % 60;
// タイマー表示を更新
document.getElementById("countdown").innerHTML = hours + "時間 " + minutes + "分 " + seconds + "秒";
if (!paused) {
// 残り時間を1秒減らす
totalTime--;
// 残り時間が0になったらタイマーを停止
if (totalTime < 0) {
clearInterval(timer);
alert("時間が経過しました!");
}
}
}
function pauseCountdown() {
paused = true;
}
function resumeCountdown() {
paused = false;
}
</script>
</head>
<body>
<header>
<button type="button" id="js-buttonHamburger" class="c-button p-hamburger" aria-controls="global-nav" aria-expanded="false" onclick="toggleSidebar()">
<span class="p-hamburger__line">
<span class="u-visuallyHidden">
メニューを開閉する
</span>
</span>
</button>
<h1>
<a href="">
<img src="./img/TIMECAPTOR.png" alt="TIMECAPTOR" class="logo">
</a>
</h1>
</header>
<aside class="sidebar">
<nav>
<ul>
<li><a href="../home&side/stopwatch.html">ストップウォッチ</a></li>
<li><a href="stopwatch copy.html">タイマー</a></li>
<li><a href="#">リンク3</a></li>
</ul>
</nav>
</aside>
<div class="container">
<h2>カウントダウンタイマー</h2>
<label>時間:</label>
<input type="range" id="hoursInput" min="0" max="12" value="0" list="tlist1">
<datalist id="tlist1">
<option value="3"></option>
<option value="6"></option>
<option value="9"></option>
</datalist>
<span id="hoursValue">0</span> 時間
<br>
<label>分数:</label>
<input type="range" id="minutesInput" min="0" max="59" value="0" list="tlist2">
<datalist id="tlist2">
<option value="10"></option>
<option value="20"></option>
<option value="30"></option>
<option value="40"></option>
<option value="50"></option>
</datalist>
<span id="minutesValue">0</span> 分
<br>
<button onclick="settingCountdown()">設定</button>
<button onclick="pauseCountdown()">一時停止</button>
<button onclick="resumeCountdown()">スタート</button>
<h3 id="countdown"></h3>
</div>
<script>
// スライダーの値が変更された時に表示を更新
var hoursSlider = document.getElementById("hoursInput");
var hoursValue = document.getElementById("hoursValue");
hoursSlider.addEventListener("input", function() {
hoursValue.innerHTML = hoursSlider.value;
});
var minutesSlider = document.getElementById("minutesInput");
var minutesValue = document.getElementById("minutesValue");
minutesSlider.addEventListener("input", function() {
minutesValue.innerHTML = minutesSlider.value;
});
</script>
<script src = "JSsource/scripts.js"></script>
<script src="JSsource/hamburger.js"></script>
</body>
</html>
body {
margin: 0;
font-family: Arial, sans-serif;
}
header {
z-index: 90;
width: 100%;
height: 70px;
position: fixed;
left: 0;
top: 0;
display: column;
justify-content: column;
background-color: #333;
}
.sidebar {
z-index: 10;
position: fixed;
top: 60px;
left: -250px;
width: 250px;
height: 100%;
background-color: #f4f4f4;
transition: left 0.3s;
}
.sidebar.open {
z-index: 10;
position: fixed;
left: 0;
}
main {
padding: 50px;
}
.c-button {
z-index: 100;
position: relative;
display: inline-block;
text-decoration: none;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
border: none;
background-color: transparent;
cursor: pointer;
}
.p-hamburger {
z-index: 100;
position: fixed;
top: 8px;
/*bottom: 0;*/
left: 10px;
/*right: 0;*/
width: 48px;
height: 48px;
margin: auto;
border-radius: 50%;
border: 1px solid #f9d8ae;
box-shadow: 0 0 2rem transparent;
outline: none;
-webkit-transition: all .3s ease-in-out;
transition: all .3s ease-in-out;
}
.p-hamburger:hover,
.p-hamburger:focus {
box-shadow: 0 0 .5rem rgba(255, 255, 255, .5 );
}
.p-hamburger__line {
position: fixed;
z-index: 100;
top: 32px;
/*right: 0;
bottom: 0;*/
left: 25px;
margin: auto;
width: 18px;
height: 2px;
background-color: #f9d8ae;
-webkit-transition: inherit;
transition: inherit;
}
.p-hamburger__line::before,
.p-hamburger__line::after {
position: absolute;
display: block;
width: 100%;
height: 100%;
background-color: inherit;
content: '';
-webkit-transition: inherit;
transition: inherit;
}
.p-hamburger__line::before {
top: -5px;
}
.p-hamburger__line::after {
top: 5px;
}
.p-hamburger[aria-expanded="true"] .p-hamburger__line {
background-color: transparent;
}
.p-hamburger[aria-expanded="true"] .p-hamburger__line::before,
.p-hamburger[aria-expanded="true"] .p-hamburger__line::after {
top: 0;
background-color: #f9d8ae;
}
.p-hamburger[aria-expanded="true"] .p-hamburger__line::before {
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
}
.p-hamburger[aria-expanded="true"] .p-hamburger__line::after {
-webkit-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
transform: rotate(-45deg);
}
.u-visuallyHidden {
position: absolute;
white-space: nowrap;
width: 1px;
height: 1px;
overflow: hidden;
border: 0;
padding: 0;
clip: rect(0 0 0 0);
clip-path: inset(50%);
margin: -1px;
}
.logo {
width: auto;
height: 50px;
float: right;
margin-right: 45%;
}