目录
1、css框架的选用
2、JS框架的选用
3、(可选)前端模板的选用
4、从0开始编写自己风格的网站
1、自定义我们框架的主要js:
2、自定义我们框架的主css
1、:root
2、ol,ul,li 列表标签最好去掉前面的东西
3、a标签的定制
4、选中的样式修改
5、input框去掉选中边框
6、自定义滚动条
3、html页面首页
1、html内容
2、html布局之栅格布局
3、flex布局
没有完整写过一整套网站的人可能感受不到,有一个完美的前端框架对于开发来说有多么便捷,因为它可以让你只专注于开发网站内容跟样式,不必考虑整体细节(如自适应、不同分辨率下的展示效果、风格)等等。所以,在开发网站前搭建一个强大的框架十分重要。
本文在线访问:链接
本文源代码:链接
css框架能帮你尽量保证不同分辨率下网页能正常展示,并预设了相当多的样式,这个其实你自己实现也是可以的,根据笔者的经验,如果你这个网站是真的要给用户使用,必须要先做移动端!必须要先做移动端!必须要先做移动端!PC端可以不美观,移动端也可以没有那么多功能,但是必须要先做移动端。
目前流行的css框架有Bootstrap跟最近大热的Tailwind CSS。笔者就选用的Bootstrap,它可以简单的帮你做到页面自适应。有关css框架我将在之后详细讲解,本网站初期就先不使用任何css框架,而是直接就是一个手写。
得益于现在大火的“前后端分离”的架构思想,目前的网站前端框架无非是Vue跟React,但是无论是什么框架都是基于原生js的,原生js经过多年的迭代生态极其强大(尤其是JQuery)。那么在选用框架之前,先明确网站的内容,如果不是xxx管理系统,抑或是前后端不分离,很建议你使用原生的js,因为这些网站基本上不会有表格、树、表单等等,也不会有太多可复用的内容供你写成组件。因为是面向所有用户,因此必须要有很多很秀的功能,这些用原生js实现是相当简单的,也有益于帮助你研究源码和优化网站内容。
笔者网站的框架选用的原生JS+JQuery。
(该模板不是vue文件跟React的jsx文件)模板技术伴随着“前后端分离”的架构设计也逐渐淡出人们的视线,尤其目前基本都用SpringBoot作为后台,对模板支持不是很好。但是目前很多老项目都还在使用模板,如xxx.jsp。目前笔者使用beetl作为自己的html模板,但是本专栏不会涉及模板语言。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
</body>
</html>
我们知道在dom加载完会执行onload方法,JQuery是ready或者$(fn),如果你喜欢用$(fn)作为脚本入口也无所谓,但是既然要有自己风格,我们就自己写一个!
新建一个js为zq.js,这个js将作为我们整个网站的框架的js。刚开始的内容很简单很少,是这样的:
zq = function() {
var me = this;
var defaultConfig = {
}
}
zq.prototype = {
constructor : zq,
elementType: function(obj){
return Object.prototype.toString.call(obj).replace(/^[object (.+)]$/, '$1').toLowerCase();
},
alert:function(str){
var me = this;
var type=me.elementType(str);
if(type!="string"){
alert("该数据类型是:"+type+",已在控制台打印!");
me.log("来自zqAlert的内容:"+str);
}else{
alert(str);
}
},
isChrome : function() {
return /Chrome/i.test(navigator.userAgent);
},
log(obj){
console.log(obj);
}
}
zq = new zq();
zq.$ = function(fn) {
document.addEventListener('DOMContentLoaded', fn, false);
}
'这个语法思想跟java一样,只不过语法得用js的,我们新建一个zq类,在类里添加一些默认参数和装配函数方法。最后使用new去实例化,调用就直接用zq.方法就行。注意,我们只需要在该js里面实例化一次就行了。
代码的最后有一个DOMContentLoaded事件,这个就是dom初始化完成后触发的方法,我们就通过添加监听绑定该事件,就可以实现自己的初始化方法了。
最后,页面将会是这样的:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
</body>
<script src="zq.js"></script>
<script>
zq.$(function(){
zq.log("qwe");
zq.log(zq.isChrome())
zq.alert({asd:123});
})
</script>
</html>
这不会是多此一举,后面我们网站的样式跟组件库会都拓展进来,这样的网站才是我们自己的网站,使其充满自己独特的风格。
新建一个zq.css,这个css将会是我们整个网站的css,也是你自定义自己网站风格的css
:root {
--blue: #007bff;
--indigo: #6610f2;
--purple: #6f42c1;
--pink: #e83e8c;
--red: #dc3545;
--orange: #fd7e14;
--yellow: #ffc107;
--green: #28a745;
--teal: #20c997;
--cyan: #17a2b8;
--white: #fff;
--gray: #767575;
--gray-dark: #434242;
--primary: #5FCB71;
--secondary: #4f4f4f;
--success: #28a745;
--info: #17a2b8;
--warning: #ffc107;
--danger: #dc3545;
--light: #c2c2c2;
--dark: #434242;
--breakpoint-xs: 0;
--breakpoint-sm: 576px;
--breakpoint-md: 768px;
--breakpoint-lg: 992px;
--breakpoint-xl: 1200px;
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace
}
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,dl,dt,dd,ol,nav ul,nav,li,fieldset,form,label,legend,table,caption,tbody,tfoot,
thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,
footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section {
display: block;
}
ol,ul {
list-style: none;
margin: 0px;
padding: 0px;
}
blockquote,q {
quotes: none;
}
blockquote:before,blockquote:after,
q:before,q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
::selection {
background: var(--primary);
color: #fff;
text-shadow: none;
}
a {
color: var(--primary);
text-decoration: none;
background-color: transparent;
cursor: pointer;
}
.txt-rt {
text-align: right;
}
.txt-lt {
text-align: left;
}
.txt-center {
text-align: center;
}
.float-rt {
float: right;
}
.float-lt {
float: left;
}
.clear {
clear: both;
}
.pos-relative {
position: relative;
}
.pos-absolute {
position: absolute;
}
.vertical-base {
vertical-align: baseline;
}
.vertical-top {
vertical-align: top;
}
css样式我觉得用到的时候再写就行,上面简单介绍几个:
1、:root在这里面可以预设一些样式,然后var(自定义的名称)去使用,主要是用来主题换肤、统一样式。
2、ol,ul,li 列表标签最好去掉前面的东西使用list-style: none即可
3、a标签的定制a标签很强大,因为它拥有跳转链接跟下载的属性,所以很多按钮都用a标签去做,但是遗憾的是,a标签是文本标签,根据a标签不同的使用情形,我们可以给a标签加上display:block,就可以将其转为块状元素,就拥有块状元素的属性了(宽高等)。这是一个极好的标签。
4、选中的样式修改::selection {
background: #5FCB71;
color: #fff;
text-shadow: none;
}
使用outline:none即可,只能说很丑
6、自定义滚动条滚动条是overflow:scroll显示,可通过xy只修改横向竖向,然后下面的参数自己测吧
html::-webkit-scrollbar {
width: 5px;
height: 1px;
}
html::-webkit-scrollbar-thumb {
border-radius: 10px;
box-shadow: inset 0 0 5px rgb(0 0 0 / 20%);
background: #c2bebe;
}
html::-webkit-scrollbar-track {
box-shadow: inset 0 0 5px rgb(0 0 0 / 20%);
border-radius: 10px;
background: #ededed;
}
主页的html非常重要,因为它是你网站的门户跟搜索引擎的入口,因此不仅要美观,还有能被蜘蛛爬虫抓取到主要内容:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demo1</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="Keywords" contect="测试网站">
<meta name="description" content="这是测试网站">
<link href="zq.css" rel='stylesheet' type='text/css' />
<script type="application/x-javascript">
addEventListener("load", function() {
setTimeout(hideURLbar, 0);
}, false);
function hideURLbar() {
window.scrollTo(0, 1);
}
</script>
</head>
<body>
</body>
<script src="jquery-3.3.1.js"></script>
<script src="zq.js"></script>
<script>
zq.$(function(){
})
</script>
</html>
1、html内容1、这个必须要加,这个是设计不同分辨率下样式的关键
<meta name="viewport" content="width=device-width, initial-scale=1.0">
2、这两个标签是爬虫爬取的内容,用于搜索引擎收录关键词和快照展示
<meta name="Keywords" contect="测试网站">
<meta name="description" content="这是测试网站">
3、这是请求头,目前可忽略
<meta http-equiv="X-UA-Compatible" content="ie=edge">
4、清除滚动条缓存。用户刷新页面的时候应该是回到页面顶部,如果不清除滚动条缓存,刷新页面会回到之前滚动条所在的页面位置。一般而言,用户在你的网站通过a标签跳转到另外的网站后,在返回到你的网站,如果你不想让用户回到之前浏览的位置,添加以下代码。
清除滚动条缓存在开发网站的时候是必要的,这样可以更舒服的调试网页。在上线后就可以去掉了。
<script type="application/x-javascript">
addEventListener("load", function() {
setTimeout(hideURLbar, 0);
}, false);
function hideURLbar() {
window.scrollTo(0, 1);
}
</script>
5、其他分析网站、分析用户行为和广告投放的js,可以在上线引入。
栅格布局的原理很简单,只是通过浮动结合width的百分比实现,这点对不同分辨率自适应比较好。这个我建议直接用bootstrapCSS就行,不过我们手写一个也行,直接在zq.css补充以下代码。
注意:1、再给类标签命名时并放在我们公用的css里时,最好加上自己风格的前缀,不要太用一些公共的名称,避免与其他组件的css冲突。
2、在栅格结构里,border是最危险的,必须使用 box-sizing: border-box将边框并排,因为栅格结构的宽都是严格通过屏幕百分比定义好的,border的一个像素都会导致之后的栅格宽度因超出屏幕宽度而换行。
3、在不需要浮动的时候,在不需要浮动的dom前使用样式clear:both来取消之后的dom浮动
4、栅格广泛用于整体布局,它对box的padding,margin,border等是很敏感的,对此经常需要微调。
* {
box-sizing: border-box;
}
.zq-col-pc-16{
float:left;
width: 100%;
}
.zq-col-pc-12{
float:left;
width: 75%;
}
.zq-col-pc-10{
float:left;
width: 62.5%;
}
.zq-col-pc-8{
float:left;
width: 50%;
}
.zq-col-pc-6{
float:left;
width: 37.5%;
}
.zq-col-pc-4{
float:left;
width: 25%;
}
.zq-col-pc-2{
float:left;
width: 12.5%;
}
.zq-col-pc-1{
float:left;
width: 6.25%;
}
@media (min-width: 768px) {
}
<style>
.div-grid {
width: 100vw;
height: 100vh;
}
.div-grid div {
border: 1px solid var(--primary);
background: var(--gray);
text-align: center;
font-size: 16px;
padding: 20px 0;
}
div .grid-title{
color: var(--primary);
font-weight: bold;
}
</style>
<div class="div-grid">
<div class="zq-col-pc-16 grid-title">栅格布局</div>
<div class="zq-col-pc-16">zq-col-pc-16</div>
<div class="zq-col-pc-8">zq-col-pc-8</div>
<div class="zq-col-pc-8">zq-col-pc-8</div>
<div class="zq-col-pc-4">zq-col-pc-4</div>
<div class="zq-col-pc-4">zq-col-pc-4</div>
<div class="zq-col-pc-4">zq-col-pc-4</div>
<div class="zq-col-pc-4">zq-col-pc-4</div>
<div class="zq-col-pc-2">zq-col-pc-2</div>
<div class="clear" style="border: 0px;padding: 0px;"></div>
<div class="zq-col-pc-2">zq-col-pc-2</div>
<div class="zq-col-pc-4">zq-col-pc-4</div>
<div class="zq-col-pc-8">zq-col-pc-8</div>
<div class="zq-col-pc-1">zq-col-pc-1</div>
<div class="zq-col-pc-1">zq-col-pc-1</div>
<div class="zq-col-pc-2">zq-col-pc-2</div>
<div class="zq-col-pc-4">zq-col-pc-4</div>
<div class="zq-col-pc-8">zq-col-pc-8</div>
</div>
<script src="jquery-3.3.1.js"></script>
<script src="zq.js"></script>
<script>
zq.$(function() {
$(".div-grid").find("div").each(function(index,element){
$(element).off("click").on("click",function(){
$(this).toggle(500);
})
})
})
</script>
有一句话说的好:“44 年前我们就把人类送上月球了,但现在我们仍然无法在 CSS 中实现垂直居中”,flex在页面的局部布局用的非常多,就是因为它对于垂直居中非常友好,而且摆脱了栅格固定宽度百分比的限制,在实现同一个较复杂的布局里,flex比栅格要容易很多。由于对移动端没有栅格布局友好,所以我们使用栅格作为整体布局。也不能说flex布局在移动端没用,flex布局在PC端跟移动端的切换十分平滑,就是因为它可以随意切换主轴方向,从而使某些样式在PC端显示为水平,在移动端表现为垂直。
我们先看一下一个简单的效果:
在父div添加样式display: flex;即可启用flex布局,你需要了解以下的概念:
flex布局的排列都是通过主轴去排列的,默认是水平方向,垂直方向则是交叉轴,每个轴都有起点、中间点跟终点。下面就是定义在父标签的flex的属性:
.div-main-flex{
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
align-items: flex-start;
align-content: flex-start;
}
1、flex-direction:这个就是定义主轴方法:默认值是row代表从左往右的水平行,就是我们上图那一条主轴方向;row-reverse是从右往左的水平行;column是以上图中从上往下的垂直交叉轴作为主轴;column-reverse则是以从下往上作为主轴方向。
2、flex-wrap 这个是定义在主轴方向如何换行:默认值是nowrap,代表不换行;wrap表示换行,并往下延伸;wrap-reverse表示换行,但是往上顺延。虽然默认是nowrap,但是我们最常使用的是wrap。
3、justify-content 这个是定义在主轴的对齐方式:默认是flex-start,从前(主轴方向的start)往后(主轴方向的end);flex-end则是从后往前;center就是中间。baseline用的很少,它是根据里面的文本去对齐,感兴趣可以自己百度。
4、剩下的几个大家跟子元素的属性(flex属性,很重要)可以自己百度,由于篇幅原因就不说了。
在线访问:链接
本文源代码:链接
未完待续。。。。。。
相关知识
web前端期末大作业:基于HTML+CSS+JavaScript制作鲜花礼品在线购物网站设计(19页)
用DIV+CSS技术设计的鲜花网站(web前端网页制作课作业)
数学之美系列
web前端期末大作业 html+css+javascript+jquery+bootstarp响应式鲜花售卖网站16页
深入浅出学配色!带你重新全面认识色彩系列之紫色篇
数学里最美的公式: e^iπ+1=0
深入浅出学配色!带你重新全面认识色彩系列之绿色篇
设5阶行列式 1 1 0 0 0 1 2 0 0 0 D=0x2+x3 x3+x
【毕业设计之html系列】基于html5的花店网站设计
云南花卉物流之前端物流
网址: 全网最详细之从0搭建网站系列,学不会来打我(前端篇1) https://m.huajiangbk.com/newsview561295.html
上一篇: 鲜花网站建设资源 |
下一篇: Java 网站开发入门指南:如何 |