学习来自风`宇blog的博客首页效果
<style lang="scss">
@import url('//at.alicdn.com/t/c/font_4004562_8c8umr3qxuh.css');
* {
margin: 0;
padding: 0;
list-style: none;
text-decoration: none;
box-sizing: border-box;
}
.shadow {
box-shadow: 0 4px 8px 6px rgba(7, 17, 27, .06) !important;
}
a {
color: inherit;
}
.verticle-line {
margin: 3px;
}
body {
overflow-x: hidden;
overflow-y: auto;
/* 背景渐变 */
background: linear-gradient(90deg, rgba(247, 149, 51, .1), rgba(243, 112, 85, .1) 15%, rgba(239, 78, 123, .1) 30%, rgba(161, 102, 171, .1) 44%, rgba(80, 115, 184, .1) 58%, rgba(16, 152, 173, .1) 72%, rgba(7, 179, 155, .1) 86%, rgba(109, 186, 130, .1));
}
/* 封面图下移效果 */
@keyframes slidedown {
0% {
opacity: 0.3;
transform: translateY(-60px);
}
100% {
opacity: 1;
transform: translateY(0px);
}
}
.slidedown {
animation: slidedown 1s;
}
/* 内容上移效果 */
@keyframes slideup {
0% {
opacity: 0.3;
transform: translateY(60px);
}
100% {
opacity: 1;
transform: translateY(0px);
}
}
.slideup {
animation: slideup 1s;
}
/* 从小变大效果 */
@keyframes scaleup {
0% {
transform: scale(0.3);
}
100% {
transform: scale(1);
}
}
.scaleup {
animation: scaleup 1s;
}
/* 箭头下滑 */
@keyframes arrowSlideDown {
0% {
opacity: 0;
transform: translateY(-20px);
}
50% {
opacity: 1;
transform: translateY(0px);
}
100% {
opacity: 0;
transform: translateY(20px);
}
}
/* 光标闪烁 */
@keyframes shanshuo {
0% {
opacity: 0;
}
50% {
opacity: 1;
}
100% {
opacity: 0;
}
}
/* 箭头滑向右边 */
@keyframes arrowSlideRight {
0% {
opacity: 0;
transform: translateX(-20px);
}
50% {
opacity: 1;
transform: translateX(0px);
}
100% {
opacity: 0;
transform: translateX(5px);
}
}
.arrow-right-move {
animation: arrowSlideRight 3s infinite;
}
/* 头像旋转 */
@keyframes rotateAround {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.rotateForever {
animation: rotateAround 5s linear infinite;
}
.avatar:hover {
animation-play-state: paused;
}
/* 公告摆动 */
@keyframes wave {
0% {
transform: rotate(350deg);
}
100% {
transform: rotate(370deg);
}
}
.wave {
animation: wave 1.3s infinite ease-in-out alternate-reverse;
transform-origin: 50% 0;
display: inline-block;
}
.shouye-cover {
height: 100vh;
width: 100vw;
background-image: url(@/assets/bg1.jpg);
background-size: cover;
background-position: center;
display: flex;
color: #eee;
.shouye-intro {
margin-top: 40vh;
width: 100%;
text-align: center;
font-size: 18px;
.shouye-title {
margin-bottom: 10px;
}
.shouye-desc {
span {
animation: shanshuo 1s infinite;
}
}
}
.arrow-down {
position: absolute;
width: 100%;
height: 90px;
bottom: 0;
text-align: center;
i {
font-size: 32px;
cursor: pointer;
display: inline-block;
animation: arrowSlideDown 2s infinite;
}
}
}
.shouye-content {
max-width: 1200px;
// border: 1px solid red;
margin: 0 auto 20px;
padding: 10px;
display: flex;
color: #595655;
.content-wrapper {
width: 75%;
padding: 12px;
// border: 1px solid red;
.shuoshuo {
background-color: #fff;
padding: 10px;
display: flex;
cursor: pointer;
border-radius: 8px;
margin-bottom: 20px;
}
.content:last-child {
.article-item {
margin-bottom: 0;
}
}
.content {
.article-item {
margin-bottom: 20px;
display: flex;
align-items: center;
height: 300px;
background-color: #fff;
border-radius: 8px;
overflow: hidden;
.article-cover {
width: 45%;
height: 100%;
overflow: hidden;
img {
width: 100%;
height: 100%;
transition: all 0.5s;
&:hover {
transform: scale(1.1);
}
}
}
.article-info {
width: 55%;
margin: 0 20px;
.article-title {
font-size: 24px;
cursor: pointer;
transition: all 0.3s;
&:hover {
color: #30adff;
}
}
.article-intro {
font-size: 12px;
margin: 8px 0;
color: #a7a7a7;
display: inline-flex;
align-items: center;
margin-left: 5px;
i {
margin-right: 5px;
}
}
.article-text {
text-indent: 2em;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;
}
}
.article-text {
word-break: break-all;
}
}
}
}
.sider-wrapper {
width: 25%;
// border: 1px solid red;
padding: 12px;
.sider-sticky {
position: sticky;
top: 20px;
}
.author {
background-color: #fff;
padding: 20px;
border-radius: 8px;
display: flex;
flex-direction: column;
align-items: center;
box-shadow: 1px 0 0 0 rgba(0, 0, 0, 0.3);
line-height: 1.5;
margin-bottom: 15px;
.avatar {
width: 116px;
height: 116px;
display: block;
border-radius: 50%;
overflow: hidden;
border: 2px solid rgb(230, 230, 230);
img {
width: 100%;
height: 100%;
}
}
.author-name {
color: #4c4948;
font-size: 24px;
}
.author-bio {
font-size: 14px;
margin-top: 10px;
}
.author-statis {
display: flex;
margin-top: 10px;
width: 100%;
padding: 0 10px;
.author-statis-item {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
.author-statis-item-name {
margin-bottom: 10px;
}
}
}
.join-label {
height: 30px;
background-color: #49b1f5;
width: 100%;
text-align: center;
line-height: 30px;
color: #fff;
font-size: 0.845em;
margin-top: 10px;
cursor: pointer;
z-index: 1;
position: relative;
i {
font-size: 0.875em;
}
&:hover {
animation-name: pulse;
}
}
.author-links {
margin-top: 10px;
display: flex;
a {
// border: 1px solid red;
display: block;
margin: 0 5px;
height: 1.8em;
width: 1.8em;
display: flex;
align-items: center;
justify-content: center;
i {
font-size: 1.6em;
&.gitee {
font-size: 1.4em !important;
color: #c71d23;
}
&.weibo {
font-size: 1.8em !important;
}
&.qq {
color: #08bdfd;
}
}
}
}
}
.notice {
padding: 20px;
background-color: #fff;
margin-bottom: 15px;
border-radius: 8px;
line-height: 2;
.notice-header {
margin-bottom: 5px;
}
i {
margin-right: 5px;
}
}
.site-info {
padding: 20px;
background-color: #fff;
border-radius: 8px;
line-height: 2;
.site-info-header {
margin-bottom: 5px;
}
i {
margin-right: 5px;
}
.site-info-content {
.site-info-item {
display: flex;
justify-content: space-between;
}
}
}
}
}
.shouye-footer {
height: 136px;
background: linear-gradient(-45deg,#ee7752,#ce3e75,#23a6d5,#23d5ab);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
p {
line-height: 2em;
color: #eee;
font-size: 0.875em;
user-select: none;
}
}
style>
<template>
<div class="shouye">
<navbar />
<div class="shouye-cover slidedown">
<div class="shouye-intro">
<h1 class="shouye-title scaleup">PSCOOLh1>
<div class="shouye-desc scaleup">
南朝四百八十寺, 多少楼台烟雨中
<span>|span>
div>
div>
<div class="arrow-down" @click="scrollDown">
<i class="iconfont icon-a-xiala2">i>
div>
div>
<div class="shouye-content slideup">
<div class="content-wrapper">
<a href="#" class="shuoshuo shadow scaleup">
<i class='iconfont icon-message'>i>
<div style="width: 100%;text-align: center;">follow your heart and get it~div>
<i class='iconfont icon-youshuangjiantou arrow-right-move'>i>
a>
<div v-for="i of 5" :key="i" class="content">
<div class="article-item shadow scaleup">
<a href="#" class="article-cover">
<img src="@/assets/article-cover.jpg" alt="">
a>
<div class="article-info">
<a href="#" class="article-title">@Configuration注解的full模式和lite模式a>
<div class="article-intro">
<i class="iconfont icon-rili">i>
<span>2023-04-01span>
<span class="verticle-line">|span>
<i class="iconfont icon-wenjian">i><span>默认span>
<span class="verticle-line">|span>
<i class="iconfont icon-biaoqian">i><span>默认span>
div>
<div class="article-text">
标注有@Configuration或者@Configuration(proxyBeanMethods =
true)的类被称为Full模式的配置类,proxyBeanMethods默认为TRUE。在常见的场景中,@Bean方法都会在标注有@Configuration的类中声明,以确保总是使用“Full模式”,这么一来,交叉方法引用会被重定向到容器的生命周期管理,所以就可以更方便的管理Bean依赖。
div>
div>
div>
div>
div>
<div class="sider-wrapper">
<div class="sider-sticky">
<div class="author shadow scaleup">
<a href="#" class="avatar rotateForever" style="width: 56px;height: 56px;">
<img src="@/assets/avatar.jpg" alt="">
a>
<div class="author-name">
zzhua
div>
<div class="author-bio">
热爱技术, 一点点的学习
div>
<div class="author-statis">
<a href="#" class="author-statis-item">
<div class="author-statis-item-name">文章div>
<div>9div>
a>
<a href="#" class="author-statis-item">
<div class="author-statis-item-name">分类div>
<div>6div>
a>
<a href="#" class="author-statis-item">
<div class="author-statis-item-name">标签div>
<div>7div>
a>
div>
<div class="join-label animate__animated">
<i class="iconfont icon-24gl-bookmark">i>
加入书签
div>
<div class="author-links">
<a href="#">
<i class="iconfont icon-QQ-circle-fill qq">i>
a>
<a href="https://gitee.com/zzhua195" target="_blank">
<i class="iconfont icon-gitee-fill-round gitee">i>
a>
<a href="#">
<i class="iconfont icon-weibo weibo">i>
a>
div>
div>
<div class="notice shadow scaleup">
<div class="notice-header">
<i class="iconfont icon-gonggao wave">i>公告
div>
<div class="notice-content">
欢迎来到我的博客~
div>
div>
<div class="site-info shadow scaleup">
<div class="site-info-header">
<i class="iconfont icon-tongji">i>网站资讯
div>
<div class="site-info-content">
<div class="site-info-item">
<span>运行时间: span>
<span>48天17时19分25秒span>
div>
<div class="site-info-item">
<span>总访问量: span>
<span>102span>
div>
div>
div>
div>
div>
div>
<div class="shouye-footer">
<p>©2023 - 2023 By zzhuap>
<p>备案号: xxxp>
div>
div>
template>
<script>
import Navbar from './Navbar.vue';
export default {
name: 'Shouye',
methods: {
scrollDown() {
window.scroll({
top: document.documentElement.clientHeight,
behavior: 'smooth'
})
}
},
components: {
Navbar
}
}
script>