首页 > 其他分享 >前端框架开发之Niu框架——从零学框架的小白

前端框架开发之Niu框架——从零学框架的小白

时间:2024-05-05 15:55:50浏览次数:25  
标签:24 框架 零学 -- 100% gap var niu Niu

起因:

从2018年6月一直到我重新提笔,6年时间。这六年时间,我见证了IT的兴衰,见证了小众框架LayUI框架的重新更新,见证了vue、angular、react等框架的主流。----博客园老牛大讲堂

 

初衷:

今年我突发灵感,想要设计一个网站,作为程序员却"提笔忘字",就连最基本的css也变得陌生,我网上翻找大量的网站,想要找到一款,像我这种半吊子也能用的网站(即懂一些代码原理,却早已经忘了底层代码怎么写),事实却让我失望,没有一款适合我。layui框架符合拿来即用,可有些组件根本就没有。请原谅我,学习vue等框架对我来说太难了,我就想要一个好看的页面,便携通用的组件。我求索无果,所以在想,为什么不自己开发一个开源的网站,让大众成为贡献者,一起参与到开发中来。

 

Niu框架由然而生:----博客园老牛大讲堂

从头编写一个框架,说真的特别难,万里长征,光是选择哪一种布局模式,让我研究了一个星期,特别是对于我这样一个不碰代码六年的小白。最终让我决定用flex布局,去开发一个框架。随后我将不断完善框架,最终形成一个小众的开源框架。

 

废话不多说,上代码:----博客园老牛大讲堂

 开发一个框架,第一步,一定要初始化浏览器的各种默认参数,别问我一个小白怎么知道的,当后期开发发现总是栅格对不齐的时候,一点点抠出来的。

* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
	/* 可以添加这个属性以确保盒模型包含border和padding */
} 

 

第二步:定义公共属性,例如栅格水槽、圆角参数、niu-container,开始确定flex布局+百分比的方式,开始开发。----博客园老牛大讲堂

/*第二部分: 定义flex */

/* 公共元素 */
:root {
	--gap: 8px;/* 设置栅格槽之间间距 */
	--border-radius: 5px;/* 设置栅格圆角数值 */
}

.niu-container {
	width: 100%;
	display: flex;
	flex-wrap: wrap;
	gap: var(--gap);
	flex-flow: row wrap;
	padding-left: calc(var(--gap));/* 设置左边有一个边距 这里,下面一张图会解释为什么要设置一个左边距 */
}

 

注意如果没有左边距,浏览器自带的样式,会直接覆盖掉。右侧暂时还没发现这个问题(欢迎大家留言,告诉我右边需要留边距吗?)

 

 

第三步:设置百分比。请注意:这里我让每一个元素都减少了一个水槽的宽度(水槽就是两个元素之间的距离),这个是我开发框架的亮点,有兴趣的研究一下原理,欢迎提出改机意见,前提得简单点,复杂我看不懂。----博客园老牛大讲堂

 

niu-col-1 {
	width: calc((100% / 24) * 1 - var(--gap));
}

.niu-col-2 {
	width: calc((100% / 24) * 2 - var(--gap));
}

.niu-col-3 {
	width: calc((100% / 24) * 3 - var(--gap));
}

.niu-col-4 {
	width: calc((100% / 24) * 4 - var(--gap));
}

.niu-col-5 {
	width: calc((100% / 24) * 5 - var(--gap));
}

.niu-col-6 {
	width: calc((100% / 24) * 6 - var(--gap));
}

.niu-col-7 {
	width: calc((100% / 24) * 7 - var(--gap));
}

.niu-col-8 {
	width: calc((100% / 24) * 8 - var(--gap));
}

.niu-col-9 {
	width: calc((100% / 24) * 9 - var(--gap));
}

.niu-col-10 {
	width: calc((100% / 24) * 10 - var(--gap));
}

.niu-col-11 {
	width: calc((100% / 24) * 11 - var(--gap));
}

.niu-col-12 {
	width: calc((100% / 24) * 12 - var(--gap));
}

.niu-col-13 {
	width: calc((100% / 24) * 13 - var(--gap));
}

.niu-col-14 {
	width: calc((100% / 24) * 14 - var(--gap));
}

.niu-col-15 {
	width: calc((100% / 24) * 15 - var(--gap));
}

.niu-col-16 {
	width: calc((100% / 24) * 16 - var(--gap));
}

.niu-col-17 {
	width: calc((100% / 24) * 17 - var(--gap));
}

.niu-col-18 {
	width: calc((100% / 24) * 18 - var(--gap));
}

.niu-col-19 {
	width: calc((100% / 24) * 19 - var(--gap));
}

.niu-col-20 {
	width: calc((100% / 24) * 20 - var(--gap));
}

.niu-col-21 {
	width: calc((100% / 24) * 21 - var(--gap)) ;
}

.niu-col-22 {
	width: calc((100% / 24) * 22 - var(--gap));
}

.niu-col-23 {
	width: calc((100% / 24) * 23 - var(--gap));
}

.niu-col-24 {
	width: calc((100% / 24) * 24 - var(--gap));
}
   

 

  下面是html应用结果:经过测试没有问题。----博客园老牛大讲堂

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<link rel="stylesheet" href="./css/niu.css">  
	</head>
	<body>
		<div class="niu-container">
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1"niu-bg-green>1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green ">1/24</div>
			<div class="niu-col-1 niu-bg-green ">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
			<div class="niu-col-1 niu-bg-green">1/24</div>
		</div>
	</body>
</html>

  

运行结果:不管屏幕多窄,元素总能保持在一行。欢迎各位大神,前来指正,我将不断改进我的代码----博客园老牛大讲堂

 

标签:24,框架,零学,--,100%,gap,var,niu,Niu
From: https://www.cnblogs.com/laonniudajiangtang/p/18173514

相关文章

  • Django-rest-framework框架
    【一】drf入门规范【二】序列化组件【三】请求与响应【四】视图组件【五】路由组件【六】认证组件【七】权限组件【八】频率组件【九】过滤与排序【十】异常捕获【十一】分页组件【十二】生成接口文档【十三】序列化类源码分析【十四】JWT介绍【十五】simple-jwt简......
  • 为什么我不选择React、Vue.js作为SAAS网站的前端框架
    引言“道”在中国哲学中,是一个重要的概念,表示“终极真理”。“道”这一概念,不单为哲学流派诸子百家所重视,也被宗教流派道教等所使用。大道至简的意思就是大道理是极其简单的,简单到一两句话就能说明白。所谓“真传一句话,假传万卷书”。正文在开启独立创作之路时,我也考虑过各种......
  • 51单片机程序框架之短按长按
    /******************************************************************************此程序是依据吴坚鸿程序框架,在普中51A2单片机开发板上的程序练习程序目标:按键长按与短按,长按LED亮,短按LED灭****************************************************************************......
  • 51单片机程序框架之带顺序的组合按键触发
    /******************************************************************************此程序是依据吴坚鸿程序框架,在普中51A2单片机开发板上的程序练习程序目标:带顺序的按键组合键,按下后LED取反*****************************************************************************......
  • 51单片机程序框架之单击与双击
    /******************************************************************************此程序是依据吴坚鸿程序框架,在普中51A2单片机开发板上的程序练习程序目标:按键单击与双击,单击LED取反,双击按下LED1取反*******************************************************************......
  • 51单片机程序框架之双击按键
    /******************************************************************************此程序是依据吴坚鸿程序框架,在普中51A2单片机开发板上的程序练习程序目标:按键组合键,按下后LED取反*******************************************************************************/#inc......
  • 接口自动化测试框架搭建的思路
    参数替换的思路为什么替换参数:请求参数不一定全部都是写死的,有可能存在接口之间的数据依赖在Excel中写入特殊标记(如#key#),说明写了特殊标记的地方需要做替换处理读取Excel中的参数,通过正则表达式提取出来需要被替换的key,得到一个list遍历list,根据list中不同的参数,去不同的地方......
  • 窗口程序框架
    #include<windows.h>LRESULTCALLBACKWndProc(HWNDhwnd,UINTMessage,WPARAMwParam,LPARAMlParam){ switch(Message){ caseWM_DESTROY:{ PostQuitMessage(0); break; } default: returnDefWindowProc(hwnd,Message,wParam,lParam); }......
  • 窗口程序框架
    #include<windows.h>//回调函数,消息处理函数LRESULTCALLBACKWndProc(HWNDhwnd,//窗口句柄UINTMessage,//消息WPARAMwParam,//消息参数LPARAMlParam){//消息参数switch(Mess......
  • 窗口程序的框架
    #include<windows.h>//步骤//1.创建WinMain()主函数//2.设计窗口//3.注册窗口//4.创建窗口//5.显示窗口//回调函数,消息处理函数LRESULTCALLBACKWndProc(HWNDhwnd,//窗口句柄 UINTMessage,//消息 WPARAMwParam,//消息参数 LPARAMlParam)......