CSSで円柱を描くサンプルコード
CSSで円柱を描くために、div
要素と変形プロパティを使用して、シンプルな円柱を作成できます。以下は、CSSで円柱を描くサンプルコードです。
HTML:
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS 円柱</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="cylinder">
<div class="circle top"></div>
<div class="rectangle"></div>
<div class="circle bottom"></div>
</div>
</body>
</html>
CSS (styles.css):
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #f0f0f0;
margin: 0;
}
.cylinder {
display: flex;
flex-direction: column;
align-items: center;
perspective: 1000px;
}
.circle {
width: 100px;
height: 100px;
background-color: #1e90ff;
border-radius: 50%;
}
.rectangle {
width: 100px;
height: 200px;
background-color: #1e90ff;
position: relative;
}
.rectangle::before,
.rectangle::after {
content: '';
position: absolute;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.1);
border-radius: 50%;
}
.rectangle::before {
top: 0;
transform: rotateX(90deg) translateY(-50%);
}
.rectangle::after {
bottom: 0;
transform: rotateX(-90deg) translateY(50%);
}
.top {
transform: translateZ(100px);
}
.bottom {
transform: translateY(200px) translateZ(100px);
}
このサンプルコードでは、円柱は.cylinder
クラスによって作成され、それぞれの円柱の部分(円と長方形)は別々のdiv
要素で表現されています。それぞれの円は.circle
クラスによって作成され、長方形は.rectangle
クラスによって作成されます。::before
および::after
疑似要素を使用して、長方形の丸みを帯びた側面を作成しています。最後に、transform
プロパティを使用して円と長方形の位置を調整し、立体的な円柱を表現しています。
clip-pathを使って円柱を描くサンプルコード
clip-path
を使用して円柱を描く場合、次のようなサンプルコードが考えられます。
HTML:
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS 円柱 with clip-path</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="cylinder">
<div class="circle top"></div>
<div class="rectangle"></div>
<div class="circle bottom"></div>
</div>
</body>
</html>
CSS (styles.css):
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #f0f0f0;
margin: 0;
}
.cylinder {
display: flex;
flex-direction: column;
align-items: center;
perspective: 1000px;
}
.circle {
width: 100px;
height: 100px;
background-color: #1e90ff;
border-radius: 50%;
}
.rectangle {
width: 100px;
height: 200px;
background-color: #1e90ff;
position: relative;
clip-path: polygon(
0 0, 100% 0,
100% 100%, 0 100%,
25% 100%, 50% 50%, 25% 0
);
}
.rectangle::before,
.rectangle::after {
content: '';
position: absolute;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.1);
clip-path: polygon(
0 0, 100% 0,
100% 100%, 0 100%,
25% 100%, 50% 50%, 25% 0
);
}
.rectangle::before {
top: 0;
left: -25%;
transform: rotateX(90deg) translateY(-50%);
}
.rectangle::after {
bottom: 0;
left: -25%;
transform: rotateX(-90deg) translateY(50%);
}
.top {
transform: translateZ(100px);
}
.bottom {
transform: translateY(200px) translateZ(100px);
}
このサンプルコードでは、clip-path
を使用して円柱の側面部分(長方形)に丸みを帯びた形状を与えます。この形状は、多角形(polygon
)を使用して定義されており、6つのポイントを結ぶことで円柱の側面のような形状が表現されています。また、::before
および::after
疑似要素を使用して、長方形の丸みを帯びた側面に影を追加しています。最後に、transform
プロパティを使用して、円と長方形の位置を調整し、立体的な円柱を表現しています。