<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>動画共有サイト</title>
<style>
/* スタイルは省略 */
</style>
</head>
<body>
<header>
<h1>動画共有サイト</h1>
</header>
<main>
<section id="video-container">
<!-- 動画を表示 -->
<iframe width="560" height="315" src="https://www.youtube.com/embed/Qkls4DCX_9I" frameborder="0" allowfullscreen></iframe>
</section>
<section id="comments-container">
<!-- コメントを表示 -->
</section>
<section id="comment-form-container">
<!-- コメントを投稿するフォーム -->
<form id="comment-form">
<textarea id="comment-input" rows="3" placeholder="コメントを入力してください"></textarea>
<button type="submit">コメントを投稿</button>
</form>
</section>
<section id="categories">
<!-- カテゴリ一覧 -->
<h2>カテゴリ</h2>
<ul>
<li><a href="#">音楽</a></li>
<li><a href="#">スポーツ</a></li>
<li><a href="#">ゲーム</a></li>
<li><a href="#">ニュース</a></li>
</ul>
</section>
</main>
<footer>
<!-- お気に入りボタン -->
<button id="favorite-button">お気に入り</button>
<!-- 検索フォーム -->
<input type="text" id="search-input" placeholder="動画を検索">
<button id="search-button">検索</button>
</footer>
<script>
// コメントを追加する関数
function addComment(comment) {
var commentsContainer = document.getElementById('comments-container');
var commentElement = document.createElement('div');
commentElement.textContent = comment;
commentsContainer.appendChild(commentElement);
}
// フォームの送信イベントを処理する
document.getElementById('comment-form').addEventListener('submit', function(event) {
event.preventDefault(); // フォームのデフォルトの動作を停止
var commentInput = document.getElementById('comment-input');
var commentText = commentInput.value.trim(); // 入力されたコメントを取得
if (commentText !== '') {
addComment(commentText); // コメントを追加
commentInput.value = ''; // 入力欄をクリア
}
});
// お気に入りボタンのクリックイベントを処理する
document.getElementById('favorite-button').addEventListener('click', function() {
alert('動画をお気に入りに追加しました!');
});
// 検索ボタンのクリックイベントを処理する
document.getElementById('search-button').addEventListener('click', function() {
var searchInput = document.getElementById('search-input').value.trim();
alert('「' + searchInput + '」で検索しました!');
});
</script>
</body>
</html>
投稿者: chosuke
趣味はゲームやアニメや漫画などです
コードギアスR3の企画書
企画書:『コードギアス R3:反逆の遺産』
制作会社:サンライズ
企画意図:
『コードギアス 反逆のルルーシュ』の成功に続き、シリーズの新たな章を展開し、ファンに新しい視点と物語を提供する。
物語の概要:
物語は、『コードギアス 反逆のルルーシュ R2』の終わりから数年後を描く。世界は表向きの平和を享受しているが、新たな力「シャドウギアス」が登場し、再び世界は混乱に陥る。主人公はルルーシュの隠された子孫であり、彼が持つ未知のギアス能力により、新たな戦いに挑む。
登場キャラクター:
主人公:アリアス・ヴィ・ブリタニア – ルルーシュの秘密の血を引く若者。彼には未知のギアス能力が宿る。
ヒロイン:メイ・チャン – 独立運動のリーダーであり、アリアスの最初の同盟者。
アンタゴニスト:シリウス・ゾルディック – シャドウギアスの能力者で、新世界秩序を築こうと企む。
メインテーマ:
権力と抵抗 – 権力の座にある者と、それに抵抗する者との永遠の戦い。
遺産と運命 – ルルーシュの遺産がどのように次世代に影響を与えるか。
秘密と発見 – 主人公の真の起源と彼の力の秘密が明らかになるプロセス。
予定話数: 25話
ターゲットオーディエンス:
既存のファンはもちろん、新しい視聴者も引き付けるために、若者から大人まで幅広く。
プロモーション戦略:
アニメ関連イベントでのプレミア上映会
SNSを活用したティザーキャンペーン
コラボグッズの販売
特別編集版DVDのリリース
Pinterest風サイト
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Pintrest風サイト</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f0f0f0;
}
header {
background-color: #333;
color: #fff;
padding: 20px;
text-align: center;
}
.container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 20px;
padding: 20px;
margin: 0 auto;
max-width: 1200px;
}
.card {
background-color: #fff;
border: 1px solid #ddd;
border-radius: 5px;
overflow: hidden;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
transition: transform 0.3s ease;
cursor: pointer;
}
.card:hover {
transform: translateY(-5px);
}
.card img {
width: 100%;
display: block;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
.card-content {
padding: 15px;
}
.card h2 {
font-size: 18px;
margin: 10px 0;
color: #333;
}
.card p {
font-size: 14px;
color: #666;
margin-top: 0;
}
.modal {
display: none;
position: fixed;
z-index: 999;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,0.7);
}
.modal-content {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: #fff;
padding: 20px;
border-radius: 5px;
}
.modal img {
max-width: 100%;
display: block;
margin: 0 auto;
}
footer {
background-color: #333;
color: #fff;
text-align: center;
padding: 10px 0;
margin-top: 20px;
}
</style>
</head>
<body>
<header>
<h1>Pintrest風サイト</h1>
</header>
<main>
<div class="container">
<div class="card" onclick="openModal('https://via.placeholder.com/800x600', 'Beautiful Sunset', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.')">
<img src="https://via.placeholder.com/400x250" alt="Image 1">
<div class="card-content">
<h2>Beautiful Sunset</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
</div>
<div class="card" onclick="openModal('https://via.placeholder.com/800x600', 'Cute Kittens', 'Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.')">
<img src="https://via.placeholder.com/400x300" alt="Image 2">
<div class="card-content">
<h2>Cute Kittens</h2>
<p>Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.</p>
</div>
</div>
<!-- More cards -->
</div>
</main>
<div id="myModal" class="modal">
<div class="modal-content">
<span class="close" onclick="closeModal()">×</span>
<img src="" alt="Modal Image" id="modalImage">
<div id="caption"></div>
</div>
</div>
<footer>
<p>© 2024 Pintrest風サイト</p>
</footer>
<script>
function openModal(imageSrc, title, description) {
document.getElementById("modalImage").src = imageSrc;
document.getElementById("caption").innerHTML = "<h2>" + title + "</h2><p>" + description + "</p>";
document.getElementById("myModal").style.display = "block";
}
function closeModal() {
document.getElementById("myModal").style.display = "none";
}
</script>
</body>
</html>
CSS 画像を左右に振り分ける
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Flexbox</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<article>
<img src="forest.png" width="240" height="160">
<div class="text">
<h1>タイトル</h1>
<p>こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</p>
</div>
</article>
<article>
<img src="forest.png" width="240" height="160">
<div class="text">
<h1>タイトル</h1>
<p>こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</p>
</div>
</article>
<article>
<img src="forest.png" width="240" height="160">
<div class="text">
<h1>タイトル</h1>
<p>こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</p>
</div>
</article>
<article>
<img src="forest.png" width="240" height="160">
<div class="text">
<h1>タイトル</h1>
<p>こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</p>
</div>
</article>
</body>
</html>
style.css
@charset "utf-8";
article {
display: flex;
gap: 16px;
align-items: center;
}
article+article {
margin-top: 32px;
}
article:nth-child(even) {
flex-direction: row-reverse;
}
.text {
flex: 1;
}
h1 {
margin: 0;
font-size: 22px;
}
HTMLCSS 画像付きの記事一覧を作る
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Flexbox</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<article>
<img src="forest.png" width="240" height="160">
<div class="text">
<h1>タイトル</h1>
<p>こんにちは。こんにちは。</p>
</div>
</article>
</body>
</html>
style.css
@charset "utf-8";
article {
display: flex;
gap: 16px;
}
.text {
background: pink;
flex: 1;
}
Slack風チャットボットサイト
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Slack風チャットボット</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
.chat-container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.chat-window {
width: 400px;
background-color: #f4f4f4;
border: 1px solid #ddd;
border-radius: 5px;
padding: 20px;
}
.chat-messages {
height: 300px;
overflow-y: auto;
border-bottom: 1px solid #ddd;
margin-bottom: 10px;
}
#message-input {
width: 100%;
padding: 10px;
border: 1px solid #ddd;
border-radius: 5px;
margin-bottom: 10px;
}
button {
padding: 10px 20px;
background-color: #007bff;
color: #fff;
border: none;
border-radius: 5px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="chat-container">
<div class="chat-window">
<div class="chat-messages" id="chat-messages">
<!-- チャットメッセージが表示される部分 -->
</div>
<input type="text" id="message-input" placeholder="メッセージを入力してください...">
<button onclick="sendMessage()">送信</button>
</div>
</div>
<script>
function sendMessage() {
var messageInput = document.getElementById('message-input');
var message = messageInput.value.trim();
if (message !== '') {
var chatMessages = document.getElementById('chat-messages');
var messageElement = document.createElement('div');
messageElement.textContent = message;
chatMessages.appendChild(messageElement);
messageInput.value = '';
// メッセージをバックエンドに送信
fetch('/send_message', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ message: message })
});
}
}
</script>
</body>
</html>
CSS align-self、autoキーワード
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Flexbox</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<div class="item-1">1</div>
<div class="item-2">2</div>
<div class="item-3">3</div>
</div>
</body>
</html>
style.css
@charset "utf-8";
.container {
border: 8px solid blue;
display: flex;
height: 240px;
}
.item-1 {
width: 80px;
height: 80px;
background-color: pink;
align-self: center;
}
.item-2 {
width: 80px;
height: 80px;
background-color: skyblue;
margin-left: auto;
}
.item-3 {
width: 80px;
height: 80px;
background-color: orange;
}
CSS フレックスコンテナを設定
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Flexbox</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<div class="item-1">1</div>
<div class="item-2">2</div>
<div class="item-3">3</div>
</div>
<div class="container">
<div class="item-1">1</div>
<div class="item-2">2</div>
<div class="item-3">3</div>
</div>
</body>
</html>
style.css
@charset "utf-8";
.container {
border: 8px solid blue;
/* display: flex; */
display: inline-flex;
width: 280px;
}
.item-1 {
width: 80px;
height: 80px;
background-color: pink;
}
.item-2 {
width: 80px;
height: 80px;
background-color: skyblue;
}
.item-3 {
width: 80px;
height: 80px;
background-color: orange;
}
Social Networking Service
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Social Networking Service</title>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
<style>
body {
padding: 20px;
}
.card {
margin-bottom: 20px;
}
</style>
</head>
<body>
<div class="container">
<h1 class="text-center mb-4">Social Networking Service</h1>
<!-- ログインフォーム -->
<div id="loginForm" class="card w-50 mx-auto">
<div class="card-body">
<h2 class="card-title text-center mb-4">Login</h2>
<div class="form-group">
<input type="text" id="loginUsername" class="form-control" placeholder="Username">
</div>
<div class="form-group">
<input type="password" id="loginPassword" class="form-control" placeholder="Password">
</div>
<button onclick="login()" class="btn btn-primary btn-block">Login</button>
<button onclick="registerForm()" class="btn btn-secondary btn-block">Register</button>
</div>
</div>
<!-- 登録フォーム -->
<div id="registerForm" class="card w-50 mx-auto" style="display: none;">
<div class="card-body">
<h2 class="card-title text-center mb-4">Register</h2>
<div class="form-group">
<input type="text" id="registerName" class="form-control" placeholder="Full Name">
</div>
<div class="form-group">
<input type="text" id="registerUsername" class="form-control" placeholder="Username">
</div>
<div class="form-group">
<input type="password" id="registerPassword" class="form-control" placeholder="Password">
</div>
<button onclick="register()" class="btn btn-primary btn-block">Register</button>
<button onclick="loginForm()" class="btn btn-secondary btn-block">Back to Login</button>
</div>
</div>
<!-- プロフィール -->
<div id="profile" class="card w-50 mx-auto" style="display: none;">
<div class="card-body">
<h2 class="card-title text-center mb-4">Profile</h2>
<p><strong>Name:</strong> <span id="profileName"></span></p>
<p><strong>Username:</strong> <span id="profileUsername"></span></p>
<button onclick="logout()" class="btn btn-danger btn-block">Logout</button>
</div>
</div>
<!-- 投稿フォーム -->
<div id="postForm" class="card w-75 mx-auto" style="display: none;">
<div class="card-body">
<h2 class="card-title text-center mb-4">Create Post</h2>
<div class="form-group">
<textarea id="postContent" class="form-control" rows="3" placeholder="What's on your mind?"></textarea>
</div>
<button onclick="createPost()" class="btn btn-primary btn-block">Post</button>
</div>
</div>
<!-- 投稿一覧 -->
<div id="postList" class="w-75 mx-auto mt-4"></div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.4/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<script>
let currentUser = null; // 現在のログインユーザー
let users = []; // ユーザーの配列
let posts = []; // 投稿の配列
function login() {
const username = document.getElementById('loginUsername').value;
const password = document.getElementById('loginPassword').value;
const user = users.find(u => u.username === username && u.password === password);
if (user) {
currentUser = user;
showProfile();
} else {
alert('Invalid username or password.');
}
}
function logout() {
currentUser = null;
hideAll();
document.getElementById('loginForm').style.display = 'block';
}
function registerForm() {
hideAll();
document.getElementById('registerForm').style.display = 'block';
}
function register() {
const name = document.getElementById('registerName').value;
const username = document.getElementById('registerUsername').value;
const password = document.getElementById('registerPassword').value;
users.push({ name, username, password });
alert('Registration successful! Please login.');
loginForm();
}
function loginForm() {
hideAll();
document.getElementById('loginForm').style.display = 'block';
}
function showProfile() {
hideAll();
document.getElementById('profile').style.display = 'block';
document.getElementById('profileName').textContent = currentUser.name;
document.getElementById('profileUsername').textContent = currentUser.username;
document.getElementById('postForm').style.display = 'block';
displayPosts();
}
function createPost() {
const postContent = document.getElementById('postContent').value;
if (postContent.trim() !== '') {
const post = {
id: Date.now(),
content: postContent,
author: currentUser.name,
authorUsername: currentUser.username,
likes: 0,
comments: []
};
posts.unshift(post); // 最新の投稿を先頭に追加
displayPosts();
document.getElementById('postContent').value = ''; // 投稿後、入力欄を空にする
}
}
function displayPosts() {
const postList = document.getElementById('postList');
postList.innerHTML = '';
posts.forEach(post => {
const postElement = document.createElement('div');
postElement.innerHTML = `
<div class="card mb-3">
<div class="card-body">
<p class="card-text">${post.content}</p>
<small class="text-muted">Posted by ${post.author} (@${post.authorUsername}) at ${new Date(post.id).toLocaleString()}</small><br>
<button onclick="likePost(${post.id})" class="btn btn-primary btn-sm mt-2">Like (${post.likes})</button>
<button onclick="showComments(${post.id})" class="btn btn-secondary btn-sm mt-2">Comments</button>
</div>
</div>
`;
postList.appendChild(postElement);
});
}
function likePost(postId) {
const post = posts.find(p => p.id === postId);
post.likes++;
displayPosts();
}
function showComments(postId) {
const post = posts.find(p => p.id === postId);
const comments = prompt('Enter your comment:');
if (comments !== null && comments.trim() !== '') {
post.comments.push({ author: currentUser.name, content: comments });
displayPosts();
}
}
function hideAll() {
document.getElementById('loginForm').style.display = 'none';
document.getElementById('registerForm').style.display = 'none';
document.getElementById('profile').style.display = 'none';
document.getElementById('postForm').style.display = 'none';
}
users.push({ name: 'User One', username: 'user1', password: 'password1' });
users.push({ name: 'User Two', username: 'user2', password: 'password2' });
hideAll();
document.getElementById('loginForm').style.display = 'block';
</script>
</body>
</html>
Javascript 文字列の整形
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My JavaScript</title>
</head>
<body>
<script src="main.js"></script>
</body>
</html>
main.js
'use strict';
{
const string = prompt('Name?');
//if(string.toLowerCase() === 'taro'){
if(string.toUpperCase().trim() === 'TARO'){
console.log('Corrent!');
}else{
console.log('Wrong!');
}
}
