花博客静态页面

 

 

 项目结构如下:

common.css代码如下:

html,
body,
#app {
	margin: 0;
	padding: 0;
	height: 100%;
	background-color: #f0f0f0;
}

* {
	padding: 0;
	margin: 0;
}

input,
textarea,
button,
a {
	outline: 0;
}

#app {
	display: flex;
	flex-direction: column;
	align-items: center;
}

/* 清除li默认黑色圆圈符号 */
li {
	list-style: none;
}

/*------------------------------ 初始化结束end----------------------------- */
.w_940 {
	width: 940px;
}

.ft-se12 {
	font-size: 12px;
}

.ft_se13 {
	font-size: 13px;
}

.ft-se14 {
	font-size: 14px;
}

.ft-se15 {
	font-size: 15px;
}

.ft-se16 {
	font-size: 16px;
}

.ft-se18 {
	font-size: 18px;
}

.ft-se20 {
	font-size: 20px;
}

.ft-se24 {
	font-size: 24px;
}

.ft-se28 {
	font-size: 28px;
}

.ft-se29 {
	font-size: 29px;
}

.white {
	color: white;
}

/* --------------------------弹性样式------------------------- */
/* 横向排列 */
.row {
	display: flex;
}

.row-x-ctr {
	display: flex;
	justify-content: center;
}

.row-y-ctr {
	display: flex;
	align-items: center;
}

/* 竖向排列 */
.col {
	display: flex;
	flex-direction: column;
}

/*竖向水平居中 */
.col-x-ctr {
	display: flex;
	flex-direction: column;
	align-items: center;
}

/* 竖向垂直居中 */
.col-y-ctr {
	display: flex;
	flex-direction: column;
	justify-content: center;
}

/* 横向-垂直水平居中 */
.row-xy-ctr {
	display: flex;
	justify-content: center;
	align-items: center;
}

/* 竖向-垂直水平居中 */
.col-xy-ctr {
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
}

.col-xy-start {
	display: flex;
	flex-direction: column;
	/* 横向向左对齐 */
	align-items: flex-start;
	/* 竖向向顶部对齐 */
	justify-content: flex-start;
}


/* 粗体 */
.bd {
	font-weight: bold;
}

如果把所有html结构都写到App.vue里面,会很冗余,看得眼花缭乱,很难维护。

把整体直接拆分为header、nav、bannner、main、footer,并封装成组件,就方便管理。

bannerBox.vue

<script setup>
</script>
<template>
	<!-- banner部分 -->
	<div class="banner_container ">
		<div class="banner_title_box ">
			<p><span>Do you love flowers as</span></p>
			<p>much as we do?</p>
		</div>
		<div class="banner_paragraph">
			<p><span>Lorem ipsum dolor sit amet consectetur adipisicing elit,</span></p>
			<p>sed do eiusmod tempor incididunt ut labore et dolore</p>
			<p>magna aliaqua.Ut enim ad minim veniam,quis nostrud</p>
			<p>exercitation ullamco laboris nisi ut.</p>
		</div>
	</div>
</template>
<style lang="scss" scoped>
	.banner_container {
		width: 940px;
		margin-top: 22px;
		background-image: url(/src/assets/logo.png);
		background-repeat: no-repeat;
		background-size: cover;
		border-radius: 10px;

		.banner_title_box {
			padding-left: 32.64px;

			p {
				font-size: 28px;
				color: white;
			}

			p:nth-child(1) {
				margin-top: 50.5px;
				margin-bottom: 13.5px;
			}

			p:nth-child(2) {
				margin-bottom: 33.5px;
			}
		}

		.banner_paragraph {
			color: #cee446;
			padding-left: 32.64px;
			font-size: 13px;

			p:nth-child(-n+3) {
				margin-bottom: 7.77px;
			}

			p:nth-child(4) {
				margin-bottom: 43.77px;
			}
		}
	}
</style>

footerBox.vue

<script setup>
</script>
<template>
	<!-- banner部分 -->
	<div class="banner_container ">
		<div class="banner_title_box ">
			<p><span>Do you love flowers as</span></p>
			<p>much as we do?</p>
		</div>
		<div class="banner_paragraph">
			<p><span>Lorem ipsum dolor sit amet consectetur adipisicing elit,</span></p>
			<p>sed do eiusmod tempor incididunt ut labore et dolore</p>
			<p>magna aliaqua.Ut enim ad minim veniam,quis nostrud</p>
			<p>exercitation ullamco laboris nisi ut.</p>
		</div>
	</div>
</template>
<style lang="scss" scoped>
	.banner_container {
		width: 940px;
		margin-top: 22px;
		background-image: url(/src/assets/logo.png);
		background-repeat: no-repeat;
		background-size: cover;
		border-radius: 10px;

		.banner_title_box {
			padding-left: 32.64px;

			p {
				font-size: 28px;
				color: white;
			}

			p:nth-child(1) {
				margin-top: 50.5px;
				margin-bottom: 13.5px;
			}

			p:nth-child(2) {
				margin-bottom: 33.5px;
			}
		}

		.banner_paragraph {
			color: #cee446;
			padding-left: 32.64px;
			font-size: 13px;

			p:nth-child(-n+3) {
				margin-bottom: 7.77px;
			}

			p:nth-child(4) {
				margin-bottom: 43.77px;
			}
		}
	}
</style>

 logoTextHeader.vue


<template>
	<!-- 外层logo盒子940宽度 -->
	<header>
		<h1><span>The Flower Blog</span></h1>
	</header>
</template>

<style lang="scss" scoped>
	header {
		width: 100%;
		display: flex;
		justify-content: center;

		h1 {
			width: 940px;
			padding-top: 50px;
			padding-bottom: 24px;
			font-size: 28px;
		}
	}
</style>

mainArticleBox.vue

<template>
	<!-- 文章容器 -->
	<div class="article_container row">
		<!-- 左侧文章 -->
		<div class="left_article_box">
			<!-- 开头段落 -->
			<article class="start_article">
				<p>Lorem ipsum dolor sit amet. consectetur adipiscing</p>
				<p>elit. Proin euismod tellus eu orci imperdiet nec</p>
				<p>rutrum lacus blandit. Cras enim nibh. sodales</p>
				<p>ultricies elementum vel.fermentum id tellus. Proin</p>
				<p>metus odio. ulthcies eu pharetra dictum, laoreet id</p>
				<p>odio.Curabitur in odio augue. Morbi congue auctor</p>
				<p>interdum.Phasellus sit amet metus justo.Phasellus</p>
				<p>vitae tellus orci. at elementum ipsum. In in quam</p>
				<p>eget diam adipiscing condimentum. Maecenas</p>
				<p>gravida diam vitae nisi convallis vulputate quis sit</p>
				<p>amet nibh.Nullam ut velit tortor Curabitur ut elit id</p>
				<p>nisi volutpat consectetur ac ac lorem. Quisque non</p>
				<p>elit et elit lacinia lobortis nec a velit. Sed ac nisi</p>
				<p>sed enim consequat porttitor.</p>
			</article>
			<!-- 末尾图文 -->
			<article class="end_article">
				<img src="/src/assets/flower.png" />
				<p>Pellentesque ut sapien arcu. egestas mollis massa.</p>
				<p>Fusee lectus leo. fringilla at aliquet sit amet.</p>
				<p>volutpat non erat. Aenean molestie nibh vitae turpis</p>
				<p>venenatis vel accumsan nunc tincidunt.</p>
			</article>
		</div>
		<!-- 右侧文章 -->
		<div class="right_article_box">
			<!-- 顶部 -->
			<article class="right_start_box">
				<p>Suspendisse id purus vel felis auctor mattis non ac</p>
				<p>erat.Pellentesque sodales venenatis condimentum.</p>
				<p>Aliquam sit amet nibh nisi, ut pulvinar est.Sed</p>
				<p>ullamcorper nisi vel tortor volutpat eleifend.</p>
				<p>Vestibulum iaculis ullamcorper diam consectetur</p>
				<p>sagittis. Quisque vitae mauhs ut elit semper</p>
				<p>condimentum vahus nec nisi. Nulla tempus porttitor</p>
				<p>dolor ac eleifend. Proin vitae purus lectus. a</p>
				<p>hendreht ipsum.Aliquam mattis lacinia hsus in</p>
				<p>blandit.</p>
			</article>
			<!-- 底部 -->
			<article class="right_end_box">
				<p>Vivamus vitae nulla dolor Suspendisse eu lacinia</p>
				<p>justo. Vestibulum a felis ante, non aliquam leo.</p>
				<p>Aliquam eleifend. est viverra semper luctus. metus</p>
				<p>purus commodo elit. a elementum nisi lectus vel</p>
				<p>magna. Praesent faucibus leo sit amet arcu</p>
				<p>vehicula sed facilisis eros aliquet. Etiam sodales.</p>
				<p>enim sit amet mollis vestibulum.ipsum sapien</p>
				<p>accumsan lectus. eget ultricies arcu velit ut diam.</p>
				<p>Aenean femmentum luctus nulla,eu malesuada urna</p>
				<p>consequat in.Pellentesque habitant morbi thstique</p>
				<p>senectus et netus et malesuada fames ac turpis</p>
				<p>egestas.Pellentesque massa lacus. sodales id</p>
				<p>facilisis ac. lobortis sed arcu. Donee hendreht</p>
				<p>fringilla ligula. ac rutrum nulla bibendum id. Cras</p>
				<p>sapien ligula. tincidunt eget euismod nec. ultricies</p>
				<p>eu augue. Nulla vitae velit sollicitudin magna mattis</p>
				<p>eleifend. Nam enim justo. vulputate vitae pretium</p>
				<p>ac. rutrum at turpis.Aenean id magna neque. Sed</p>
				<p>rhnoncus aliquet viverra.</p>
			</article>
		</div>
	</div>
</template>
<style lang="scss" scoped>
	.article_container {
		width: 641px;
		border-bottom: 1px solid #d8d8d8;

		.left_article_box {
			width: 321px;
			font-size: 12px;

			.start_article {
				p:nth-child(-n+13) {
					margin-bottom: 7.5px;
				}
			}

			.end_article {
				padding-bottom: 31.5px;

				img {
					width: 286px;
					height: 234px;
					box-shadow: 5px 5px 6px #8f8f8f;
					margin-bottom: 32.5px;
					margin-top: 54.5px;
				}

				p:nth-child(-n+4) {
					margin-bottom: 7.5px;
				}
			}
		}

		.right_article_box {
			width: 320px;
			font-size: 12px;

			.right_start_box {
				p:nth-child(-n+9) {
					margin-bottom: 7.5px;
				}

				p:nth-child(10) {
					margin-bottom: 34.5px;
				}

			}

			.right_end_box {
				p:nth-child(-n+18) {
					margin-bottom: 7.5px;
				}
			}
		}
	}
</style>

mainBottomBox.vue

<template>
	<div class="end_container">
		<!-- 左侧部分 -->
		<h1><span>Post a comment</span></h1>
		<h6 class="name_input">
			<span>Name</span>
			<input type="text" />
		</h6>
		<h6 class="email_input">
			<span>E-mail</span>
			<input type="text" />
		</h6>
		<h6 class="website_input">
			<span>Website</span>
			<input type="text" />
		</h6>
		<div class="comment_textarea row">
			<h6><span>Comment</span></h6>
			<textarea></textarea>
		</div>
		<button>Post comment</button>
	</div>
</template>
<style lang="scss" scoped>
	.end_container {
		h1 {
			font-size: 20px;
			padding-top: 29.5px;
			padding-bottom: 10.5px;
		}

		.name_input {
			font-size: 14px;
			padding-left: 123.06px;

			span {
				margin-right: 20px;
			}

			input {
				width: 306.86px;
				height: 26.5px;
				margin-bottom: 17.5px;
			}
		}

		.email_input {
			@extend .name_input;
			padding-left: 119.07px;

		}

		.website_input {
			@extend .name_input;
			padding-left: 108.07px;

			input {
				margin-bottom: 17.5px;
			}
		}

		.comment_textarea {
			padding-left: 97.07px;

			h6 {
				margin-right: 20px;
				font-size: 14px;
			}

			textarea {
				width: 304.86px;
				height: 97.5px;
				margin-bottom: 24.5px;
			}
		}

		button {
			margin-left: 178.14px;
			margin-bottom: 18.5px;
		}

	}
</style>

mainBox.vue(因为代码量太高了,就把左侧文章容器和右侧文章容器给拆分为两个组件了)

<template>
	<!-- 中间文章部分940 -->
	<main class="row">
		<mainLeftBox />
		<mainRightBox />
	</main>
</template>
<style lang="scss" scoped>
	main {
		width: 940px;
	}
</style>

mainLeftBox.vue

<template>
  <!-- 左侧文章容器 -->
  <div class="main_left_container">
    <!-- 标题 -->
    <h1><span>This is the title of a blog post</span></h1>
    <!-- 副标题 -->
    <p class="subtitle_box">
      <i
        >Posted on June 29th 2009 by <span class="gry-btm-brdr-2">Mads Kiaer </span>-
        <span class="gry-btm-brdr-2">3 comments</span>
      </i>
    </p>
    <!-- maintop文章组件 -->
    <mainArticleBox />
    <!-- main中间Comments组件 -->
    <mainMiddleBox />
    <!-- post a comment组件 -->
    <mainBottomBox />
  </div>
</template>

<style lang="scss" scoped>
.main_left_container {
  width: 641px;
  border-right: 1px solid #cbcbcb;

  // This is the title of a blog post
  h1 {
    padding-top: 33.45px;
    padding-bottom: 28.45px;
    font-size: 29px;
  }

  .subtitle_box {
    color: #858a80;
    padding-bottom: 24.84px;
    font-size: 15px;

    .gry-btm-brdr-2 {
      border-bottom: 2px solid #cccccc;
    }
  }
}
</style>

mainMiddleBox.vue

<template>
	<!-- Comment容器 -->
	<div class="middle_container row">
		<!-- 左侧盒子 -->
		<div class="middle_left_box">
			<h1 class="middle_title"><span>Comments</span></h1>
			<h1 class="underline_title "><u>George Washington</u></h1>
			<p class="middle_subtitle"><span>on June 29th 2009 at 23:35</span></p>
			<h1 class="underline_title "><u>George Washington</u></h1>
			<p class="middle_subtitle">on June 29th 2009 at 23:35</p>
			<h1 class="underline_title "><u>George Washington</u></h1>
			<p class="middle_subtitle_end">on June 29th 2009 at 23:35</p>
		</div>
		<!-- 右侧盒子 -->
		<div class="middle_right_box">
			<p><span>Lorem ipsum dolor sit amet. consectetur adlpisicing elit.</span></p>
			<p>on June 29th 2009 at 23:35 sed do eiusmod tempor</p>
			<p> magna aliqua.Ut enim ad minim veniam. quis nostrud</p>
			<p>exercitation ullamco laboris nisi ut.</p>
			<p>Lorem ipsum dolor sit amet. consectetur adlpisicing elit.</p>
			<p>on June 29th 2009 at 23:35 sed do eiusmod tempor</p>
			<p> magna aliqua.Ut enim ad minim veniam. quis nostrud</p>
			<p>exercitation ullamco laboris nisi ut.</p>
			<p>Lorem ipsum dolor sit amet. consectetur adlpisicing elit.</p>
			<p>on June 29th 2009 at 23:35 sed do eiusmod tempor</p>
			<p> magna aliqua.Ut enim ad minim veniam. quis nostrud</p>
			<p>exercitation ullamco laboris nisi ut.</p>
		</div>
	</div>
</template>


<style lang="scss" scoped>
	.middle_container {
		width: 641px;
		border-bottom: 1px solid #d8d8d8;

		.middle_left_box {
			width: 264px;

			// Comments标题
			.middle_title {
				font-size: 19px;
				margin-top: 30.11px;
				margin-bottom: 39.11px;
			}

			// George Washington
			.underline_title {
				font-size: 15px;
				margin-left: 12.71px;
				margin-bottom: 4.72px;
			}

			// on June 29th 2009 at 23:35
			.middle_subtitle {
				margin-left: 9.88px;
				margin-bottom: 94.4px;
				font-size: 14px;
			}

			//最后一个On June 29TH 2009 23:35
			.middle_subtitle_end {
				margin-left: 9.88px;
				margin-bottom: 92.4px;
				font-size: 14px;
			}
		}

		.middle_right_box {
			font-size: 12px;
			padding-top: 92.1px;

			p:nth-child(-n+3) {
				margin-bottom: 7.1px;
			}

			p:nth-child(4) {
				margin-bottom: 52.1px;
			}

			p:nth-child(n+5):nth-child(-n+7) {
				margin-bottom: 7.1px;
			}

			p:nth-child(8) {
				margin-bottom: 52.1px;
			}

			p:nth-child(n+9):nth-child(-n+11) {
				margin-bottom: 7.1px;
			}

			p:nth-child(12) {
				margin-bottom: 51.1px;
			}
		}
	}
</style>

mainRightBox.vue

<template>
	<!-- 右侧阴影容器 -->
	<div class="shadow_container">
		<!-- 上部分外层盒子 -->
		<div class="shadow_top_box ">
			<h1><span>Categories</span></h1>
			<p><span>Lorem ipsum dolor</span></p>
			<p>Sit amet consectetur</p>
			<p>Adipisicing elit sed</p>
			<p>Do eiusmod tempor</p>
			<p>Incididunt ut labore</p>
		</div>
		<!-- 下部分盒子 -->
		<div class="shadow_btm_box top_rds10">
			<h1 class="ft-se18">Archives</h1>
			<p>December 2008</p>
			<p>January 2009</p>
			<p>February 2009</p>
			<p>March 2009</p>
			<p>April 2009</p>
			<p>May 2009</p>
			<p>June2009</p>
		</div>
	</div>
</template>
<style lang="scss" scoped>
	.shadow_container {
		background: linear-gradient(to left, rgba(255, 255, 255, 0), #eaeaea);
		width: 298px;
		padding-left: 20px;
		padding-top: 22px;

		.shadow_top_box {
			background: linear-gradient(to bottom, #dedede, rgba(255, 255, 255, 0) 80%);
			border-radius: 10px 10px 0 0;
			width: 278px;

			h1 {
				font-size: 20px;
				padding-left: 17.86px;
				padding-top: 20.67px;
				padding-bottom: 12.67px;
			}

			p {
				font-size: 13px;
				margin-left: 39.42px;
			}

			p:nth-child(-n+5) {
				margin-bottom: 8.06px;
			}

			p:nth-child(6) {
				margin-bottom: 36.06px;
			}
		}

		.shadow_btm_box {
			@extend .shadow_top_box;

			p:nth-child(-n+7) {
				margin-bottom: 8.06px;
			}

		}
	}
</style>

nav.vue

<template>
	<!-- 导航栏部分 -->
	<nav>
		<ul class="row ">
			<li><span>Blog</span></li>
			<li>About</li>
			<li>Archives</li>
			<li>Contact</li>
			<li>
				<img src="/src/assets/wifi.png" />
				<span>Sybscnbe via RSS</span>
			</li>
		</ul>
	</nav>
</template>
<style lang="scss" scoped>
	nav {
		width: 100%;
		display: flex;
		justify-content: center;
		background-color: #2c2c2c;

		ul {
			width: 940px;
			color: #858a80;
			font-size: 14px;


			li {
				height: 44px;
				display: flex;
				align-items: center;

				&:nth-child(1) {
					margin-right: 126.32px;
					margin-left: 53.32px;
				}

				&:nth-child(2) {
					margin-right: 111.32px;
				}

				&:nth-child(3) {
					margin-right: 109.36px;
				}

				&:nth-child(4) {
					margin-right: 86.36px;
				}

				&:nth-child(5) img {
					margin-right: 12px;
				}
			}
		}
	}
</style>

这是一个粗略版,大家可以提出可优化的建议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值