问题描述
用 HTML、CSS 实现一个宽度为 300px, 高度为 auto 的长方形卡片, 要求:
- 卡片圆角 20px
- 背景使用渐变色进行填充
- 边框 2px,边框颜色是与背景色不同的另一种渐变色
- 卡片顶部有小幅度的内凹效果, 也就是说长方形顶部那条边为弧线,其他三边为直线。
目标效果
截图为卡片顶部部分。
用 HTML、CSS 实现一个宽度为 300px, 高度为 auto 的长方形卡片, 要求:
截图为卡片顶部部分。
把一个图片,以九宫格的切分方式,弹性地适应盒模型。
这个属性,可以指定盒子顶部和底部的固定高度的边框图案,同时让中间高度自由伸缩。
要正确使用这个属性,需要你认真学习和尝试。
我就不在这里赘述了。
反正我自己的一些按钮就用了,效果不错。
先用 clip-path,切掉顶部一部分,留下这个内凹。
然后用 drop-shadow(0 0 1px),近似地描边。严格来说,这不是边框,而是渐变的阴影。凑合吧。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>内凹顶部卡片效果</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: #f5f5f5;
margin: 0;
padding: 20px;
font-family: Arial, sans-serif;
}
.card {
width: 300px;
min-height: 200px;
position: relative;
margin: 20px;
}
.card::before {
content: '';
position: absolute;
inset: 0;
border-radius: 20px;
padding: 2px;
background: linear-gradient(45deg, #ff6b6b, #4ecdc4);
-webkit-mask:
linear-gradient(#fff 0 0) content-box,
linear-gradient(#fff 0 0);
mask:
linear-gradient(#fff 0 0) content-box,
linear-gradient(#fff 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
}
.content {
width: 100%;
height: 100%;
background: linear-gradient(135deg, #667eea, #764ba2);
border-radius: 20px;
clip-path: path('M 20 0 Q 150 20 280 0 L 300 200 L 0 200 L 0 0 Z');
padding: 30px 20px 20px;
box-sizing: border-box;
color: white;
}
</style>
</head>
<body>
<div class="card">
<div class="content">
<h2>内凹顶部卡片</h2>
<p>这是一个带有顶部内凹效果的卡片设计,使用CSS的clip-path和渐变色实现。</p>
<p>卡片宽度为300px,高度自适应内容。</p>
</div>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Custom Card</title>
<style>
/* 豆包写的 */
.card {
width: 300px;
height: auto;
position: relative;
overflow: hidden;
border-radius: 20px;/*卡片圆角 20px*/
padding: 2px;
background: linear-gradient(45deg, #0099ff, #ff66cc);/*背景使用渐变色进行填充*/
}
.card-inner {
background: linear-gradient(135deg, #e6f7ff, #fce8ff);/*边框 2px,边框颜色是与背景色不同的另一种渐变色*/
border-radius: 18px;
padding: 20px;
}
.card::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 80px;
background: inherit;
clip-path: ellipse(100% 40% at 50% 0);/*实现卡片顶部内凹弯曲*/
}
</style>
</head>
<body>
<div class="card">
<div class="card-inner">
<p>这是卡片的内容。</p>
</div>
</div>
</body>
</html>
3 回答4.8k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
你切个这个图来盖住你的卡片不就行了?