alloyTeam综合案例部分
最终目标页面的布局效果图:
1、准备工作
项目目录
在 index.less 中调整输出文件路径
//out: ../css/
在 index.html 中 link 所有需要导入的文件( link 的顺序不可调整)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>腾讯全端</title>
<link rel="stylesheet" href="favicon.ico">
<link rel="stylesheet" href="./Bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="./Bootstrap/font/bootstrap-icons.css">
<link rel="stylesheet" href="./css/index.css">
</head>
<body>
<script src="./Bootstrap/js/bootstrap.min.js"></script>
</body>
</html>
2、导航区域
复制链接中对应样式的代码:Navbar · Bootstrap v5 中文文档 v5.3 | Bootstrap 中文网 (bootcss.***)
黏贴到 index.html 的 body中
<body>
<!-- 导航 -->
<nav class="navbar navbar-expand-lg bg-body-tertiary">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Features</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Pricing</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
</div>
</div>
</nav>
<script src="./Bootstrap/js/bootstrap.min.js"></script>
</body>
</html>
更改背景色:(index.less)
目标背景色为透明,但因为目前我们的字体颜色为白色,会不明显,所以先暂时改为测试颜色(天蓝色)
// 导航
.bg-body-tertiary {
background-color: skyblue !important;
}
固定位置:(index.html)
可以自己写
也可以到链接中复制 “固定到顶部” 的类名(fixed-top),将其黏贴到 nav 的最外层的 class 中
定位 · Bootstrap v5 中文文档 v5.3 | Bootstrap 中文网 (bootcss.***)
<!-- 导航 -->
<nav class="navbar navbar-expand-lg bg-body-tertiary fixed-top">
版心居中:(index.html)
检查导航元素,发现 -fluid 是 with:100% 的效果,去除后得到版心居中效果
<!-- 导航 -->
<nav class="navbar navbar-expand-lg bg-body-tertiary fixed-top">
<div class="container">
内容位置:(index.less)
将导航内容的不同内容的位置进行修改
检查导航元素,发现 flex-grow 取值为1 ,和 flex 取值为1类似,所以我们将其更改为0
//out: ../css/
// 导航
.bg-body-tertiary {
background-color: skyblue !important;
.navbar-collapse {
flex-grow: 0;
}
}
内容填充:(index.html)
将 Navbar 更改为 img ,加上 logo 路径;将英文名称也更改为和网页中相同的名称
<body>
<!-- 导航 -->
<nav class="navbar navbar-expand-lg bg-body-tertiary fixed-top">
<div class="container">
<a class="navbar-brand" href="#"><img src="./assets/images/logo.png" alt=""></a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">首页</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">博客</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Github</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">TWeb Conf</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">SuperStar</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Web前端导航</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">关于</a>
</li>
</ul>
</div>
</div>
</nav>
<script src="./Bootstrap/js/bootstrap.min.js"></script>
</body>
3、轮播图区域
复制链接中对应样式的代码:
Carousel · Bootstrap v5 中文文档 v5.3 | Bootstrap 中文网 (bootcss.***)
黏贴到 index.html 的 body中(导航下方)
<div id="carouselExampleIndicators" class="carousel slide">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
</div>
<div class="carousel-inner">
<div class="carousel-item active">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
更改实现方式:
为了写代码更方便,为了响应式效果更方便,在 index.html 中删除所有 img ,更改为背景图实现(index.less)
<!-- 轮播图 -->
<div id="carouselExampleIndicators" class="carousel slide">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active"
aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1"
aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2"
aria-label="Slide 3"></button>
</div>
<div class="carousel-inner">
<div class="carousel-item active">
</div>
<div class="carousel-item">
</div>
<div class="carousel-item">
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators"
data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators"
data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
//轮播图
.carousel {
.carousel-item {
height: 500px;
background-image: url(../assets/uploads/banner_1.jpg);
}
}
调整轮播图数量: ( index.html)
<!-- 轮播图 -->
<div id="carouselExampleIndicators" class="carousel slide">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active"
aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1"
aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2"
aria-label="Slide 3"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="3"
aria-label="Slide 4"></button>
</div>
<div class="carousel-inner">
<div class="carousel-item active">
</div>
<div class="carousel-item">
</div>
<div class="carousel-item">
</div>
<div class="carousel-item">
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators"
data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators"
data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
更改轮播图背景图:( index.less)
//轮播图
.carousel {
.carousel-item {
height: 500px;
background-size: cover;
background-position: center 0;
}
.carousel-item:nth-child(1) {
background-image: url(../assets/uploads/banner_1.jpg);
}
.carousel-item:nth-child(2) {
background-image: url(../assets/uploads/banner_2.jpg);
}
.carousel-item:nth-child(3) {
background-image: url(../assets/uploads/banner_3.jpg);
}
.carousel-item:nth-child(4) {
background-image: url(../assets/uploads/banner_4.jpg);
}
}
轮播图响应式效果制作:( index.less )
小于768图片高度250;大于等于768图片高度400;大于等于992图片高度500
//轮播图: 小于768图片高度250;大于等于768图片高度400;大于等于992图片高度500
.carousel {
@media(max-width:768px) {
.carousel-item {
height: 250px;
}
}
@media(min-width:768px) {
.carousel-item {
height: 400px;
}
}
@media(min-width:992px) {
.carousel-item {
height: 500px;
}
}
.carousel-item {
// height: 500px;
background-size: cover;
background-position: center 0;
}
.carousel-item:nth-child(1) {
background-image: url(../assets/uploads/banner_1.jpg);
}
.carousel-item:nth-child(2) {
background-image: url(../assets/uploads/banner_2.jpg);
}
.carousel-item:nth-child(3) {
background-image: url(../assets/uploads/banner_3.jpg);
}
.carousel-item:nth-child(4) {
background-image: url(../assets/uploads/banner_4.jpg);
}
}
4、开源项目区域
测试:( index.html )
<!-- 开源项目 -->
<div class="project container">1</div>
空白间隙&&版心居中:( index.less )
// 开源项目
.project {
margin-top: 60px;
text-align: center;
}
标题:( index.html)
<!-- 开源项目 -->
<div class="project container">
<div class="title">
<h2>OpenSource / 开源项目</h2>
<p>种类众多的开源项目,让你爱不释手</p>
</div>
</div>
内容区域:( index.html )
视口宽度大于992:一行排4个盒子;视口宽度大于768:一行排2个盒子;
<!-- 开源项目 -->
<div class="project container">
<div class="title">
<h2>OpenSource / 开源项目</h2>
<p>种类众多的开源项目,让你爱不释手</p>
</div>
<div class="content">
<div class="row">
<!-- 视口宽度大于992:一行排4个盒子 col-lg-3 -->
<!-- 视口宽度大于768:一行排2个盒子 col-md-6 -->
<div class="col-lg-3 col-md-6">1</div>
<div class="col-lg-3 col-md-6">2</div>
<div class="col-lg-3 col-md-6">3</div>
<div class="col-lg-3 col-md-6">4</div>
</div>
</div>
</div>
美化盒子:( index.less)
// 开源项目
.project {
margin-top: 60px;
text-align: center;
.row {
div {
height: 200px;
margin-bottom: 10px;
a {
display: block;
height: 200px;
// background-color: skyblue;
border-radius: 4px;
}
&:nth-child(1) a {
background-color: #70c3ff;
}
&:nth-child(2) a {
background-color: #fd6a7f;
}
&:nth-child(3) a {
background-color: #7f8ea0;
}
&:nth-child(4) a {
background-color: #89d04f;
}
}
}
}
5、核心源码(布局+所有内容)
index.less
// out: "../css/"
@import './base.less';
/** 导航栏 */
.navbar {
height: 70px;
transition: .5s;
&-brand {
transition: .5s;
.logo {
width: 200px;
height: 40px;
background: url(../assets/images/logo.svg) no-repeat center / contain;
font-size: 0;
margin-bottom: 0;
}
}
&-toggler {
outline: none;
border: none;
box-shadow: none;
&:focus {
box-shadow: none;
}
}
&-nav {
width: 100%;
display: flex;
justify-content: flex-end;
.nav-item {
padding-top: 10px;
margin-left: 20px;
transition: .5s;
.nav-link {
font-size: 16px;
&:hover,
&.active {
color: #f2b535;
background-color: transparent;
}
&.hot {
background-image: linear-gradient(
to right,
#cddc39,
#ff9800 25%,
#cddc39 50%,
#ff9800 75%,
#cddc39
);
-webkit-text-fill-color: transparent;
-webkit-background-clip: text;
background-clip: text;
&:before {
content: '';
display: inline-block;
width: 13px;
height: 15px;
background-image: url(../assets/images/fire.png);
background-size: 100% 100%;
position: relative;
top: 2px;
right: 2px;
}
}
}
}
}
/** 卷曲动画 */
&.scrolled {
background-color: #26282c;
height: 60px;
padding-top: 0;
padding-bottom: 0;
.nav-item {
padding-top: 0;
}
}
}
@media (max-width: 992px) {
.navbar {
&-collapse {
border-top: none;
box-shadow: none;
width: 100%;
left: 0;
top: 60px;
position: absolute;
background: #26282c;
z-index: 40;
text-align: center;
}
.nav-item {
margin-left: 0;
padding-top: 0;
}
}
}
/** 轮播图 */
.carousel {
&-item {
height: 500px;
background-size: cover;
background-position: center;
/** 背景 */
&:nth-child(1) {
background-image: url("../assets//uploads/banner_1.jpg");
}
&:nth-child(2) {
background-image: url("../assets//uploads/banner_2.jpg");
}
&:nth-child(3) {
background-image: url("../assets//uploads/banner_3.jpg");
}
&:nth-child(4) {
background-image: url("../assets//uploads/banner_4.jpg");
}
/** 内容 */
.hire-info {
position: relative;
height: 100%;
.hire-name {
position: absolute;
right: 60px;
bottom: 160px;
font-size: 40px;
color: rgba(255,255,255,.9);
text-align: center;
letter-spacing: 3px;
line-height: 60px;
opacity: 0;
transform: translateX(100%);
transition: .5s;
}
.hire-title {
position: absolute;
bottom: 50px;
font-size: 50px;
color: hsla(0,0%,100%,.8);
left: 50px;
letter-spacing: 10px;
opacity: 0;
transform: translateX(-100%);
transition: .5s;
}
}
.item-info {
color: #fff;
text-align: center;
width: 100%;
height: 100%;
padding-top: 180px;
overflow: hidden;
.title-name {
font-size: 70px;
padding-bottom: 20px;
opacity: 0;
transform: translateY(-200%);
transition: .5s;
}
.title-desc {
font-size: 40px;
letter-spacing: 5px;
opacity: 0;
transform: translateY(200%);
transition: .5s;
}
}
/** 激活 */
&.active {
.hire-name,
.hire-title,
.title-name,
.title-desc {
opacity: 1;
transform: none;
}
}
}
}
@media (max-width: 992px) {
.carousel {
&-item {
height: 400px;
.item-info {
padding-top: 120px;
.title-name {
font-size: 56px;
}
.title-desc {
font-size: 28px;
}
}
.hire-info {
.hire-name {
bottom: 120px;
font-size: 30px;
}
.hire-title {
font-size: 36px;
left: 0;
}
}
}
}
}
@media (max-width: 576px) {
.carousel {
&-item {
height: 250px;
.item-info {
padding-top: 80px;
.title-name {
font-size: 35px;
}
.title-desc {
font-size: 20px;
}
}
.hire-info {
.hire-name {
bottom: 60px;
right: 0;
width: 100%;
line-height: 36px;
text-align: center;
}
.hire-title {
display: none;
}
}
}
}
}
// 版块(公共部分)
.section {
padding-bottom: 40px;
.items {
margin-top: 20px;
}
.title {
text-align: center;
line-height: 2em;
small {
display: block;
font-size: 16px;
line-height: 2em;
color: #919191;
font-weight: 500;
}
}
.more {
display: flex;
justify-content: center;
padding: 10px 0;
a {
display: block;
padding: 10px 16px;
line-height: 1;
font-size: 14px;
border-radius: 6px;
color: #616161;
background-color: #e1e1e1;
border: 1px solid #***c;
&:hover {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
}
}
}
// 版块(开源项目)
.project {
margin-top: 40px;
.items {
a {
display: block;
text-align: center;
padding: 20px 10px;
margin-bottom: 10px;
border-radius: 4px;
color: #fff;
position: relative;
top: 0;
overflow: hidden;
transition: all .3s ease;
&:after {
content: '';
display: block;
width: 100%;
height: 100%;
background-image: linear-gradient(
90deg,
rgba(255, 255, 255, 0),
rgba(255, 255, 255, .5),
rgba(255, 255, 255, 0)
);
transform: skew(-25deg);
position: absolute;
left: -110%;
top: 0;
}
&:hover {
box-shadow: 0 26px 40px -24px rgba(0, 36, 100, .5);
top: -6px;
&:after {
left: 110%;
transition: all .3s ease;
}
}
}
img {
height: 60px;
}
}
.omi {
background-color: #70c3ff;
}
.omi {
background-color: #70c3ff;
}
.alloyimage {
background-color: #fd6a7f;
}
.alloytouch {
background-color: #7f8ea0;
}
.soda {
background-color: #89d04f;
}
}
// 版块(作品)
.product {
.item {
display: block;
border-radius: 4px;
border: 1px solid #e4ecf3;
margin-bottom: 10px;
overflow: hidden;
transition: all .3s ease;
&:hover {
transform: translate(0, -6px);
box-shadow: 0 26px 40px -24px rgba(0, 36, 100, .5);
}
&:hover img {
transform: scale(1.2);
}
}
.img-wrap {
overflow: hidden;
}
img {
width: 100%;
transition: all .3s ease;
}
p {
text-align: center;
margin: 10px;
font-size: 14px;
color: #313131;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
// 版块(博客)
.blog {
.inner {
min-height: 325px;
padding: 0 10px;
border: 1px solid #e4ecf3;
border-radius: 4px;
margin-bottom: 10px;
}
h3 {
line-height: 1.1;
padding: 15px 0;
margin: 0;
font-size: 16px;
color: #616161;
border-bottom: 1px solid #f5f5f5;
display: flex;
align-items: center;
justify-content: space-between;
a {
color: #337ab7;
font-size: 16px;
transform: scale(1.5);
transform-origin: center bottom;
&:hover {
color: #f2b535;
}
}
}
ul {
padding: 15px 0 0 5px;
margin: 0;
li {
margin-bottom: 35px;
}
a {
display: flex;
line-height: 1;
justify-content: space-between;
align-items: center;
}
h5 {
flex: 1;
font-size: 16px;
margin: 0;
}
span {
display: block;
width: 80px;
margin-left: 10px;
}
h5, span {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
a {
color: #616161;
&:hover h5 {
color: #f2b535;
}
}
}
.type {
padding: 18px 10px;
overflow: hidden;
}
.name {
font-size: 16px;
color: #333;
margin: 10px 0 0;
&:hover {
color: #f2b535;
cursor: pointer;
}
}
.brief {
margin: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
color: #c1c1c1;
}
img {
width: 60px;
height: 60px;
margin-right: 5px;
float: left;
}
}
// 版块(明星)
.stars {
.profile {
border: 1px solid #e4ecf3;
border-radius: 4px;
text-align: center;
padding: 20px 10px 0;
margin-bottom: 10px;
transition: all .3s ease;
background-color: #f5f8fa;
&:hover {
transform: translateY(-6px);
box-shadow: 0 26px 40px -24px rgba(0, 36, 100, .3);
}
}
.img-wrap {
width: 120px;
height: 120px;
margin: 0 auto;
border-radius: 50%;
overflow: hidden;
img {
width: 100%;
}
}
h5 {
font-size: 18px;
font-weight: 400;
padding: 0 20px;
margin: 20px 0 10px;
}
p {
height: 60px;
line-height: 60px;
color: #919191;
margin: 20px -10px 0 -10px;
background-color: #fff;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
// 底部(版权、推广链接)
.footer {
padding: 30px 0;
background-color: #26282c;
color: rgba(255, 255, 255, .4);
.logo {
margin-top: 10px
}
.slogan {
font-size: 16px;
margin: 20px 0 0;
}
.copyright {
margin: 40px 0 0;
}
.title {
font-size: 14px;
color: rgba(255, 255, 255, .7);
}
a {
display: block;
line-height: 24px;
color: rgba(255, 255, 255, .4);
&:hover {
text-decoration: underline;
color: #f2b535;
}
}
.social {
margin-top: 25px;
padding: 0 2px;
text-align: center;
font-size: 12px;
img {
max-width: 100%;
width: 120px;
height: 120px;
margin-bottom: 10px;
}
}
}
@media (max-width: 992px) {
.footer {
.webmeta {
text-align: center;
}
.copyright {
margin-top: 10px;
}
}
}
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-***patible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>AlloyTeam|腾讯全端 AlloyTeam 团队</title>
<meta name="keywords" content="AlloyTeam 前端 腾讯 腾讯前端">
<meta name="description" content="腾讯全端AlloyTeam团队">
<link rel="shortcut icon" href="./favicon.ico">
<link rel="stylesheet" href="./css/bootstrap.min.css">
<link rel="stylesheet" href="./css/index.css">
</head>
<body>
<!-- 主导航 -->
<nav class="navbar navbar-dark navbar-expand-lg fixed-top">
<div class="container">
<a class="navbar-brand" href="#">
<h1 class="logo">AlloyTeam</h1>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-collapse" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbar-collapse">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" href="javascript:;">首页</a>
</li>
<li class="nav-item">
<a class="nav-link" href="javascript:;">博客</a>
</li>
<li class="nav-item">
<a class="nav-link" href="javascript:;">Github</a>
</li>
<li class="nav-item">
<a class="nav-link hot" href="javascript:;">TWeb Conf</a>
</li>
<li class="nav-item">
<a class="nav-link" href="javascript:;">SuperStar</a>
</li>
<li class="nav-item">
<a class="nav-link" href="javascript:;">Web前端导航</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">关于</a>
</li>
</ul>
</div>
</div>
</nav>
<!-- 轮播图 -->
<div class="carousel slide" id="alloyCarousel" data-bs-ride="carousel" data-bs-interval="5000">
<!-- Indicators -->
<ol class="carousel-indicators">
<li data-bs-target="#alloyCarousel" data-bs-slide-to="0" class="active"></li>
<li data-bs-target="#alloyCarousel" data-bs-slide-to="1"></li>
<li data-bs-target="#alloyCarousel" data-bs-slide-to="2"></li>
<li data-bs-target="#alloyCarousel" data-bs-slide-to="3"></li>
</ol>
<!-- Slides -->
<div class="carousel-inner">
<div class="carousel-item active">
<a href="#">
<div class="container hire-info">
<p class="hire-name">腾讯AlloyTeam招聘Web+工程师<br>2023</p>
<p class="hire-title">征不平凡的你</p>
</div>
</a>
</div>
<div class="carousel-item"></div>
<div class="carousel-item">
<a href="#">
<div class="container item-info">
<p class="title-name">Alloy前端周刊</p>
<p class="title-desc">为您带来精彩有料的前端好文</p>
</div>
</a>
</div>
<div class="carousel-item">
<a href="#">
<div class="container item-info special">
<p class="title-name">Omi</p>
<p class="title-desc">开放现代的web组件化框架</p>
</div>
</a>
</div>
</div>
</div>
<!-- 版块(开源项目) -->
<div class="container section project">
<!-- 标题 -->
<h2 class="title">OpenSource / 开源项目<small>种类众多的开源项目,让你爱不释手</small></h2>
<div class="row items">
<div class="col-xs-12 col-sm-6 col-lg-3">
<a href="#" class="omi">
<img src="./assets/images/omi.png" alt="">
<h3>OMI</h3>
<p>开放现代的Web组件化框架</p>
</a>
</div>
<div class="col-xs-12 col-sm-6 col-lg-3">
<a href="#" class="alloyimage">
<img src="./assets/images/alloyimage.png" alt="">
<h3>OMI</h3>
<p>开放现代的Web组件化框架</p>
</a>
</div>
<div class="col-xs-12 col-sm-6 col-lg-3">
<a href="#" class="alloytouch">
<img src="./assets/images/alloytouch.png" alt="">
<h3>OMI</h3>
<p>开放现代的Web组件化框架</p>
</a>
</div>
<div class="col-xs-12 col-sm-6 col-lg-3">
<a href="#" class="soda">
<img src="./assets/images/soda.png" alt="">
<h3>OMI</h3>
<p>开放现代的Web组件化框架</p>
</a>
</div>
</div>
<div class="more">
<a href="#">更多开源 ></a>
</div>
</div>
<!-- 版块(作品) -->
<section class="container section product">
<!-- 标题 -->
<h2 class="title">Product / 作品<small>新奇好玩的作品,让你欲罢不能</small></h2>
<div class="row items">
<div class="col-xs-12 col-sm-6 col-lg-3">
<a href="javascript:;" class="item">
<div class="img-wrap">
<img src="./assets/uploads/codetank.jpg" alt="">
</div>
<p>Code Tank</p>
<p>全世界首个Javascript程序员的在线编程对战游戏</p>
</a>
</div>
<div class="col-xs-12 col-sm-6 col-lg-3">
<a href="javascript:;" class="item">
<div class="img-wrap">
<img src="./assets/uploads/alloyphoto.jpg" alt="">
</div>
<p>AlloyPhoto</p>
<p>专业在线图像处理App</p>
</a>
</div>
<div class="col-xs-12 col-sm-6 col-lg-3">
<a href="javascript:;" class="item">
<div class="img-wrap">
<img src="./assets/uploads/alloydesigner.png" alt="">
</div>
<p>AlloyDesigner</p>
<p>新概念web开发工具</p>
</a>
</div>
<div class="col-xs-12 col-sm-6 col-lg-3">
<a href="javascript:;" class="item">
<div class="img-wrap">
<img src="./assets/uploads/alloystick.jpg" alt="">
</div>
<p>AlloyStick</p>
<p>HTML5骨骼动画引擎</p>
</a>
</div>
</div>
<div class="more">
<a href="#">更多作品 ></a>
</div>
</section>
<!-- 版块(博客) -->
<section class="container section blog">
<!-- 标题 -->
<h2 class="title">Blog / 博客<small>最新技术发展,业界前沿博客</small></h2>
<div class="row items">
<div class="col-lg-6">
<div class="inner">
<h3>最新博客 <a href="#">...</a></h3>
<ul class="list-unstyled">
<li>
<a href="#">
<h5>Web Worker 文献综述</h5>
<span>TAT. ***tchen</span>
</a>
</li>
<li>
<a href="#">
<h5>线程入门</h5>
<span>TAT.vorshen</span>
</a>
</li>
<li>
<a href="#">
<h5>给 JavaScript 插上多线程的翅膀 —— Web Worker 的 Promise 化实践</h5>
<span>TAT.Duang</span>
</a>
</li>
<li>
<a href="#">
<h5>脚本错误量极致优化-定位压缩且无 SourceMap 文件的脚本错误</h5>
<span>TAT.joeyguo</span>
</a>
</li>
<li>
<a href="#">
<h5>CSS Pixels</h5>
<span>TAT.oliverzli</span>
</a>
</li>
</ul>
</div>
</div>
<div class="col-lg-6">
<div class="inner">
<h3>博客分类 <a href="#">...</a></h3>
<div class="row">
<div class="type col-md-6">
<img src="./assets/images/javascript.png" alt="">
<p class="name">Javascript</p>
<p class="brief">没看过这些,怎么敢说懂js</p>
</div>
<div class="type col-md-6">
<img src="./assets/images/css.png" alt="">
<p class="name">CSS</p>
<p class="brief">神奇的CSS在哪里?</p>
</div>
<div class="type col-md-6">
<img src="./assets/images/nodejs.png" alt="">
<p class="name">Nodejs</p>
<p class="brief">亿万级数据服务的秘密</p>
</div>
<div class="type col-md-6">
<img src="./assets/images/mobile.png" alt="">
<p class="name">移动Web开发</p>
<p class="brief">PC转向移动,这是个问题</p>
</div>
<div class="type col-md-6">
<img src="./assets/images/users.png" alt="">
<p class="name">用户体验设计</p>
<p class="brief">震惊!原来应用还可以这样设计</p>
</div>
<div class="type col-md-6">
<img src="./assets/images/performance.png" alt="">
<p class="name">Web性能优化</p>
<p class="brief">丝般柔顺体验背后的真相</p>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- 版块(超级明星) -->
<section class="container section stars">
<!-- 标题 -->
<h2 class="title">SuperStar / 超级明星俱乐部<small>技术达人,最强大脑,前端先驱</small></h2>
<div class="row items">
<div class="col-lg-4">
<div class="profile">
<div class="img-wrap">
<img src="./assets/uploads/jetyu.jpg" alt="">
</div>
<h5>JetYu 于涛</h5>
<p>AlloyTeam 创始人</p>
</div>
</div>
<div class="col-lg-4">
<div class="profile">
<div class="img-wrap">
<img src="./assets/uploads/dntzhang.jpg" alt="">
</div>
<h5>DntZhang 张磊</h5>
<p>知名博主,多个开源框架作者</p>
</div>
</div>
<div class="col-lg-4">
<div class="profile">
<div class="img-wrap">
<img src="./assets/uploads/dorsywang.jpg" alt="">
</div>
<h5>DorsyWang 王斌</h5>
<p>数学达人,图像处理专家</p>
</div>
</div>
</div>
<div class="more">
<a href="#">更多明星 ></a>
</div>
</section>
<!-- 底部(版权、推广链接) -->
<section class="footer">
<div class="container">
<div class="row">
<div class="col-lg-5 webmeta">
<img class="logo" src="./assets/images/logo.png" alt="">
<h6 class="slogan">成为地球卓越的Web团队</h6>
<p class="copyright">Copyright© 2023 AlloyTeam. All Rights Reserved.</p>
</div>
<div class="col-lg-2 d-none d-lg-block ">
<h6 class="title">兄弟团队</h6>
<a href="#">腾讯CDC</a>
<a href="#">腾讯ISUX</a>
<a href="#">腾讯TGideas</a>
<a href="#">腾讯FERD</a>
<a href="#">百度FEX</a>
<a href="#">淘宝FED</a>
</div>
<div class="col-lg-2 d-none d-lg-block ">
<h6 class="title">友情链接</h6>
<a href="#">腾讯CDC</a>
<a href="#">腾讯ISUX</a>
<a href="#">腾讯TGideas</a>
<a href="#">腾讯FERD</a>
<a href="#">百度FEX</a>
<a href="#">淘宝FED</a>
</div>
<div class="col-lg-3">
<div class="row">
<div class="col-md-6 col-xs-6 social">
<img src="./assets/uploads/hm.jpg" alt="">
<p>QQ群:162225981</p>
</div>
<div class="col-md-6 col-xs-6 social">
<img src="./assets/uploads/hm.jpg" alt="">
<p>微信公众号:AlloyTeam</p>
</div>
</div>
</div>
</div>
</div>
</section>
<script src="./js/bootstrap.min.js"></script>
<script src="./js/index.js"></script>
</body>
</html>