圖1
圖2
圖3
「鏈接」
在現(xiàn)代網(wǎng)頁設(shè)計中,個人主頁是一個展示個人信息、技能、事件等的重要載體。為了吸引訪客的注意力并提供良好的用戶體驗,設(shè)計師通常會運用各種技巧和效果來增加頁面的吸引力。本文將介紹如何使用CSS創(chuàng)建一個驚嘆的個人主頁介紹卡片,展示獨特魅力;
首先,需要定義基本的HTML結(jié)構(gòu)來容納個人主頁介紹卡片;
這里外層使用一個div包裹,里面使用三個<div>元素作為包裹容器布局,并在其中添加所需的圖像、內(nèi)容和按鈕等:
<div class="card">
<div class="box">
<div class="img_box">
<video
src="./assets/video.mp4"
muted
autoplay
loop
/>
</div>
</div>
<div class="box">
<div class="content">
<h2>
Alexa
<br>
<span>
Professional Artist
</span>
</h2>
<ul>
<li>
Posts
<span>22</span>
</li>
<li>
Followers
<span>999+</span>
</li>
<li>
Following
<span>7</span>
</li>
</ul>
<button>Follow</button>
</div>
</div>
<div class="circle">
<div class="img_box">
<img src="./assets/user.jpg" alt="">
</div>
</div>
</div>
外層是card容器,視頻和文本內(nèi)容區(qū)域是上下布局的,分別使用box容器包裹,最后是circle容器包裹頭像在定位在中間左邊超出;
注:
video設(shè)置屬性:靜音(muted)可實現(xiàn)自動播放(autoplay),接著設(shè)置循環(huán)播放(loop);
img>和video>的父容器是一個類名img_box;
接下來,我們將使用CSS來為個人主頁介紹卡片添加樣式。以下是一些關(guān)鍵的樣式屬性和技巧,可以使卡片看起來更加漂亮和吸引人;
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
:root {
--clr: #083d41
}
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: var(--clr);
}
.card {
background-color: var(--clr);
position: relative;
width: 320px;
height: 430px;
display: flex;
flex-direction: column;
justify-content: space-between;
}
/* 先把容器基本樣式調(diào)整一下 */
.card .box {
background-color: tomato;
position: relative;
width: 110%;
height: 200px;
/* 文本內(nèi)容區(qū)域圓角 */
border-radius: 20px;
}
/* 頭像容器則使用定位布局 */
.card .circle {
width: 180px;
height: 180px;
position: absolute;
left: -70px;
top: 50%;
transform: translateY(-50%);
border-radius: 50%;
border: 10px solid var(--clr);
}
/* 調(diào)整img和video共有的父容器樣式 */
.card .box .img_box,
.card .circle .img_box {
position: absolute;
inset: 0;
overflow: hidden;
/* img的圓角 */
border-radius: 50%;
}
.card .box .img_box {
/* video的圓角 */
border-radius: 15px;
}
/* 調(diào)整圖片和視頻的樣式 */
.card .box .img_box video,
.card .circle .img_box img {
position: absolute;
width: 100%;
height: 100%;
object-fit: cover;
}
調(diào)整card下的第一個box容器樣式,也就是包裹視頻的容器:
.card .box:nth-child(1)::before {
content: "";
width: 20px;
height: 20px;
background-color: transparent;
position: absolute;
z-index: 10;
top: 106px;
left: -1px;
border-bottom-left-radius: 20px;
box-shadow: -6px 6px var(--clr);
}
/* 樣式同before類似,注意定位樣式 */
.card .box:nth-child(1)::after {
content: "";
width: 20px;
height: 20px;
background-color: transparent;
position: absolute;
z-index: 10;
bottom: -1px;
left: 105px;
border-bottom-left-radius: 20px;
box-shadow: -6px 6px var(--clr);
}
目前添加樣式效果圖,可以在調(diào)試階段更改明顯色彩用于調(diào)整距離、位置等;
調(diào)整card下的第二個box容器樣式,也就是包含文字信息的容器:
.card .box:nth-child(2) {
background-color: #fff;
width: 100%;
height: 220px;
}
.card .box:nth-child(2)::before {
content: "";
width: 20px;
height: 20px;
background-color: transparent;
position: absolute;
z-index: 10;
bottom: 106px;
left: -1px;
border-top-left-radius: 20px;
box-shadow: -6px -6px var(--clr);
}
.card .box:nth-child(2)::after {
content: "";
width: 20px;
height: 20px;
background-color: transparent;
position: absolute;
z-index: 10;
top: -1px;
left: 109px;
border-top-left-radius: 20px;
box-shadow: -6px -6px var(--clr);
}
.card .box .content {
position: absolute;
inset: 0;
padding: 30px 10px 20px;
display: flex;
flex-direction: column;
align-items: center;
gap: 20px;
}
/* 姓名和Title樣式 */
.card .box .content h2 {
width: 100%;
padding-left: 120px;
text-transform: uppercase;
letter-spacing: 0.1em;
line-height: 1.1em;
font-size: 1.15em;
font-weight: 600;
color: #333;
}
.card .box .content h2 span {
letter-spacing: 0.05em;
font-size: 0.75em;
font-weight: 400;
color: tomato;
text-transform: initial;
}
/* 列表樣式 */
.card .box .content ul {
position: relative;
top: 15px;
width: 100%;
padding: 0 10px;
display: grid;
grid-template-columns: repeat(3, 1fr);
}
.card .box .content ul li {
list-style: none;
display: flex;
flex-direction: column;
align-items: center;
padding: 0 10px;
font-size: 0.85em;
font-weight: 500;
color: #999;
}
.card .box .content ul li:not(:last-child)
{
border-right: 1px solid #ccc;
}
.card .box .content ul li span{
font-size: 1.65em;
color: #333;
}
/* 按鈕樣式 */
.card .box .content button {
position: relative;
top: 25px;
padding: 8px 30px;
border: none;
outline: none;
background-color: #03a9f4;
border-radius: 30px;
color: #fff;
font-size: 1em;
letter-spacing: 0.2em;
text-transform: uppercase;
font-weight: 500;
cursor: pointer;
border: 5px solid var(--clr);
box-shadow: 0 0 0 10px #fff;
transition: .5s;
}
.card .box .content button:hover {
letter-spacing: 0.5em;
background-color: #ff3d7f;
}
由于按鈕的圓角與文本內(nèi)容卡片的交界處看上去顯得有些過于突兀了; 所以現(xiàn)在把它們的交界處優(yōu)化成弧形,樣式類似box的偽元素,這里也給按鈕創(chuàng)建兩個偽元素,用于優(yōu)化兩邊的交界處:
.card .box .content button::before {
content: "";
width: 20px;
height: 20px;
background-color: transparent;
position: absolute;
top: 23px;
left: -29px;
border-top-right-radius: 20px;
box-shadow: 5px -7px #fff;
}
.card .box .content button::after {
content: "";
width: 20px;
height: 20px;
background-color: transparent;
position: absolute;
top: 23px;
right: -29px;
border-top-left-radius: 20px;
box-shadow: -5px -7px #fff;
}
除了基本樣式之外,還進一步優(yōu)化個人主頁介紹卡片的細(xì)節(jié)。一些可選的技巧包括:
通過運用CSS的各種樣式屬性和技巧,我們可以輕松地創(chuàng)建漂亮的個人主頁介紹卡片。這些卡片不僅能夠有效地展示個人信息和技能,還能夠吸引訪客的注意力并提供良好的用戶體驗。記得嘗試不同的樣式和效果來定制你自己獨特的個人主頁卡片!
CSS創(chuàng)作個人主頁介紹卡片,展示獨特魅力
原文鏈接:https://juejin.cn/post/7260709771870060603
CSS實現(xiàn)弧形卡片的3種方式:打造優(yōu)雅的現(xiàn)代網(wǎng)頁設(shè)計
**導(dǎo)語:** 在網(wǎng)頁設(shè)計中,弧形元素以其柔和而富有動態(tài)感的設(shè)計深受青睞,尤其在卡片設(shè)計上,弧形邊緣能賦予其獨特的視覺效果。本文將詳細(xì)介紹利用CSS創(chuàng)建弧形卡片的3種不同方法,包括但不限于CSS border-radius、clip-path及mask屬性,讓您的網(wǎng)頁更具吸引力。下面我們將通過實戰(zhàn)代碼演示每種方法的具體應(yīng)用。
---
### **一、基礎(chǔ)方法:border-radius 弧度控制**
**簡介:**
`border-radius` 是最常見且兼容性最好的創(chuàng)建圓角或弧形卡片的方式,適用于創(chuàng)建簡單弧形邊角的卡片設(shè)計。
```html
<div class="card-rounded">
<!-- 卡片內(nèi)容 -->
</div>
```
```css
.card-rounded {
background-color: #f5f5f5;
width: 200px;
height: 100px;
border-radius: 20px; /* 可根據(jù)需要調(diào)整數(shù)值 */
overflow: hidden;
}
```
上述代碼將創(chuàng)建一個具有弧形邊角的卡片。通過調(diào)整 `border-radius` 的值,您可以創(chuàng)建出不同程度的弧形效果,但請注意,這種方法無法創(chuàng)建非對稱或復(fù)雜弧形。
---
### **二、進階技巧:clip-path 實現(xiàn)自由形狀**
**介紹:**
`clip-path` 屬性允許我們創(chuàng)建任意形狀的裁剪區(qū)域,從而實現(xiàn)更為復(fù)雜和定制化的弧形卡片設(shè)計。
```html
<div class="card-clip-path">
<!-- 卡片內(nèi)容 -->
</div>
```
```css
.card-clip-path {
background-color: #f5f5f5;
width: 200px;
height: 100px;
-webkit-clip-path: circle(50% at right 50%);
clip-path: circle(50% at right 50%);
}
```
上述代碼創(chuàng)建了一個右半部分呈弧形的卡片。`clip-path` 提供了更多創(chuàng)造性可能,可以創(chuàng)建橢圓、多邊形甚至路徑裁剪等多種弧形效果。然而需要注意的是,`clip-path` 的瀏覽器兼容性不如 `border-radius` 理想。
---
### **三、創(chuàng)新方案:CSS Masks 打造靈活曲線**
**原理:**
CSS Masks 可以通過 `mask-image` 或 `mask-shape` 屬性為元素添加遮罩,同樣可以用來創(chuàng)建弧形卡片效果。
```html
<div class="card-mask">
<!-- 卡片內(nèi)容 -->
</div>
```
```css
.card-mask {
background-color: #f5f5f5;
width: 200px;
height: 100px;
-webkit-mask-image: radial-gradient(circle, transparent 50%, white 51%);
mask-image: radial-gradient(circle, transparent 50%, white 51%);
}
```
以上代碼利用徑向漸變作為遮罩,實現(xiàn)了卡片頂部弧形邊緣的效果。CSS Masks 具有高度靈活性,可以用于創(chuàng)建更復(fù)雜的形狀,但它的瀏覽器兼容性也相對有限。
---
### **結(jié)論與比較**
- **border-radius** 方法最為簡單易用且兼容性最好,適合日常項目和快速原型設(shè)計;
- **clip-path** 提供了更豐富的形狀裁剪能力,適合需要突破常規(guī)、追求獨特視覺效果的場景;
- **CSS Masks** 能夠創(chuàng)建基于圖像或者漸變的復(fù)雜蒙版效果,適用范圍較廣,但需要注意舊版本瀏覽器的支持情況。
選擇何種方式實現(xiàn)弧形卡片取決于項目的實際需求和兼容性要求。通過巧妙運用這些CSS特性,您可以輕松打造出別具一格的弧形卡片設(shè)計,增添網(wǎng)站的視覺吸引力。
---
**補充實踐案例:**
對于一些高級應(yīng)用場景,您還可以結(jié)合以上技術(shù),比如使用CSS Grid布局和Flexbox進行容器布局,同時利用CSS變量和媒體查詢適應(yīng)不同屏幕尺寸,讓弧形卡片設(shè)計更加靈活和響應(yīng)式。
切記,在實際開發(fā)過程中,務(wù)必關(guān)注瀏覽器兼容性問題,必要時借助PostCSS、Autoprefixer等工具增強跨瀏覽器兼容性。同時,保持對新興CSS特性的關(guān)注,與時俱進地更新您的設(shè)計與開發(fā)技術(shù)棧。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。