背景
理论上得先把CSS-MDN给过了,但是有点烦躁。
于是改为直接学bootstrap,自适应,组件化,命名规范,这些bootstrap一直是走得比较早的,现在虽然国产的AntD之类的花哨,但是体量相对来说也不大,不需要前置学习react/vue。
单就css的了解和学习来说,我将bootstrap作为初体验,已经算越级了。
起步
- bootstrap 官网:从官网下载5.1版本的作为本地使用
- fcc - bootstrap:我觉得这个题目设计还是不错的,所以还是得嫖一下咱们fcc
- w3school:虽然骂的人很多了,但是我觉得这种简单一目了然的例子表,还是很适合我这种懒狗的。
- tutorialrepublic 这个也不错的,感觉比w3c讲的更好一些。
视频课程
虽然对bootstrap只能说有一些了解,但怎么用心里没有逼数,决定先看看视频。
一番搜索后锁定了,这个原因很简单,只有1个半小时,要知道,我看东西都是看看停停,一个半小时很多了。
这个视频教程,这是最新的bootstrap 5 版本的,学东西,学新不学旧。
章节 | 要点 | 链接 |
---|---|---|
why | - bootstrap份额一直在增加- 功能强大且自定义程度高- 市场化成熟,干活效率高 | 课程文件 |
new | - 比起3&4,最大的不同是砍掉了JQuery - icons 推荐用bootstrap自己的icons lib | icons |
installation | 安装方式很多,我还是选了最土的直接download | 安装 |
Grid | - 这个部分是bootstrap最重要的部分 - breakpoint也很重要,这两是并在一起讲的。 | |
别的 | 别的感觉都是随便讲讲,我主要看看别人是怎么看这些东西的,以及讲述的逻辑 |
要点整理
基本上是跟着视频课程来,或者我看的demo/excise/project 来搞,框架搭起来比啥都重要我觉得。看到不会的就去搜,有些一看不好搜的就先记录下来。
Grid
grid-demo.html
是下载的file ,
grid-examples.html
是file
看代码就有些疑问,但是视频不可能说讲超细。code内放置的基本是class,边查边完善。
code | 要点 | 补充 |
---|---|---|
my-5 |
- m,y,5分别代表三个含义,margin上下间距都是3倍$spacer距离。 - $spacer 是个默认的变量来定义长度,默认1rem。 | spacing |
text-center |
- text-alignment 的内容 - 属于可以任意在某个容器里用,子从父继承 | text-alignment |
container |
- 每一个example都放在container里面,提供的是不同width尺寸的box,随着width的变化,padding也会改变。 | containers |
row |
- Note: In a grid layout, content must be placed inside the columns (.col and .col-*) and only columns may be the immediate children of rows (.row). Also, rows should be placed inside a container (either fixed or fluid) for proper padding and alignment.- 内容必须放到col里,只有col可以以子级的身份放到row里,row必然是放到container里 | url |
col,col-* |
- col要保证的是一个row里平均分配的row得是12份- row里的col还能接着套row再分12份col。- col-??,sm,md,lg,xl,xxl之类的主要对应breakpoint,意思是在某某宽度的区间才维持分好的设计,一旦低于这个区间就直接拉平。- 因此一个好的自适应排版布局,一个col应该是有好几个尺寸安排。- 比如这个文件内的col-xxl-1 col-xl-2 col-lg-3 col-md-4 col-sm-6 col-xs-12 就是极端案例,xxl页面的时候12个分别占1列,xl-xxl中间width时候,12个分两行,6列,以此类推。 |
col |
d-none d-block |
- none是隐藏的意思,block是固定- 这辆经常搭配着用,只在xx尺寸下可见,和除了xx尺寸都可见 | hiding-element |
.gutter |
- the padding between columns- 一般加在row后面,因为是规定的row里面的columns的间距- 默认1.5rem(24px),可在x和y两个方向上调整大小。 | gutter |
[class*="col"] {...} |
- 在<style>...</style> 中追加当前页面新的css样式- css 属性选择器的用法,极大的增加了生产力 |
Attribute_selectorsClass_selectors |
总结:这个教程1/3的内容都在讲grid,也就是说这个确实是最重要的概念。
Buttons
buttons.html
文件地址在file
btn基本上就是复制粘贴的感觉,没啥难度。也有一些扩展阅读我觉得需要安排。
key | 要点 | 补充 |
---|---|---|
颜色自定义 | - 比如btn-primary色,以及配套的actived/hover disable色。- 如果需要一个新增一个颜色的按钮怎么办?比如:btn-newcolor1 - 当一个网站的不同页面用到的颜色不同,但又是同一套bootstrap的按钮原则怎么办? |
- color- css variables- Using CSS custom properties |
本文已经增加了颜色自定义的内容
Cards & Panel
这个感觉得写个卡片试试看,难点基本没啥,官网的cards已经把常见的卡片结构都写完了….
key | 要点 | 补充 |
---|---|---|
card-shadows | 因为cards部分默认是没有shadow的,因此需要class内额外添加shadows class | shadow |
卡片结构 | - 卡片简单,也得有个body,class = card-body - 卡片复杂,还得多两个class = card-header ,class =card-footer - 卡片 |
- titles/text/links |
卡片自适应 | - 默认是100%宽度- 也能放到col里面搞,自适应布局直接套grid系统- w-75 这样的class也能规定该card的宽度占比 |
utilities |
border | -卡片的border需要额外自己加- rounded radius也算在border里面的 | border |
Typography
typography.html
文件在在:typography
这个属于一看就明白,但是要用的时候想起来就得多用,因为恍惚很容易觉得没有这个东西,但其实人家有。
key | 要点 | 补充 |
---|---|---|
font-size | - h1~h6 html标签,直接写就有bootstrap效果 - font的size & weight &line height也在这里面 | font-size |
font-color | - 字体的颜色也是比较重要的 | text-color |
image
images.html
下载地址:responsive images
图片的问题主要是涉及:float(position), align, soruce type。
key | 要点 | 补充 |
---|---|---|
iamge | - image-fliud |
images |
float | - responsive | float-responsive |
clearfix | 图片浮动特地强调了这个,一般用在用在flex用过后的内容 | clearfix |
这部分省略下面这些内容
上面的回过头看都好简单,放出来简直就像一直在写
Hello world
一样,有机会全删咯。
utilities spacing tables alerts toasts carousel/slider scrollspy navbar,navs,tabs offcanvas icons forms remaining componets
视频和官网都有,以后有遇到值得写会加入或者扩展成小标题讨论。
一些踩坑点
已经用bootstrap做过一些练习,有一些小心得。
用bootstrap我认为一个很重要的点是,既然已经决定引入它在项目中,那么就充分使用,如果一个效果不能用BS的class 解决,再考虑新增额外的css file会比较合适。
用bootstrap的思路
Q:设计自己的网页的时候到底应该遵循什么步骤?在已经确认一定会用bootstrap来完成的前提下。
A: 好问题,必须解决文本问题,文本结构都必须有了,再考虑做网页,如果你是设计师,务必先有个线框图或者UI设计稿。如果你没有设计稿,请网上找一个只需要替换文字和图片的作为参考。
假设一个场景,这个页面是关于自我介绍的,设计师,是否需要放置自己的头像?
- 外形好放真人照片:
- a. 常规尺寸头像
- b. 高清大图
- 有自己设计的LOGO/头像:
- a. 横图/竖图
- b. 色彩/气质
乍看这还需要想啊?但是确实是需要在开始写之前就考虑好的。
-
我们先考虑一下真人的情况
-
再来考虑一下自己设计形象的情况
线框图/设计稿直接关系到你的页面布局,而布局影响自适应,自适应就需要用bootstrap解决。
一开始想好,规划好。甚至素材处理好,写bootstrap就会很快。
Bootstrap颜色自定义
- 因为我是本地文件,所以,以为按着文档把结构改了变量贴进去改改就完事,但是后续不知道怎么做。
- Sass complier?让我懵了,怎么生成并引入一个index.html,尽管检索后知道vscode 扩展里搜live sas complier,但是how to make it worked in own spot?
这些细节文档是不会讲的。
有一点要强调,世界上不止你一个人在浅学,你的问题肯定前人遇到过,总有适合你的解法在网络上的不同地方!
Customizing Bootstrap 找到一个详细教程:都是使用的vscode这款编辑器,bootstrap的版本好也很接近,标题看着也像需要的内容。
- 但是场景又变了,人家是node安装的,是官网办法的推荐用法,因此为了能复现教程场景,还是需要用node的办法安一个bootstrap.
- 卡在了npm的中国特殊网络问题上,所以:cofig改连接地址 解决了。这个问题其实困扰我很久了,以前稀里糊涂能运行可能是VPN的灵性。
之后就是跟着教程走,不过主题色追加没成功。
stackoverflow 也会有人问一样的问题 :用这个解决了主题色的追加问题,感觉可以愉快的配色了。
我的是5.1.3 跟着改了之后就行了,不得不说还是很需要多搜搜的。
到这里就算结束了。
总结一下的话:
- 参考官网文档,用不用nodejs安装bootstrap确实无所谓。
- sass需要搭配编译器,vscode去扩展搜live sas compiler安装重启才生效。
- vscode 的setting里搜live sas format ,搜索结果直接编辑setting文件。作为新手的我不能说完全空白,但是也特别干净。编辑好了就这样:该插件教程
{
"files.autoSave": "afterDelay",
"workbench.colorTheme": "Quiet Light",
"liveServer.settings.donotShowInfoMsg": true,
"svelte.enable-ts-plugin": true,
// 下面这个字段是我新增的
"liveSassCompile.settings.formats":[
// savePath 是相对你的custom.scss所在的上一级(scss)文件夹而言的
{
"format": "compressed",
"extensionName": ".min.css",
"savePath": "/css"
},
//
]
//新增完毕
}
- 然后是去按着你的custom.scss 开始写下面的内容,需要注意的是我这个是nodejs,所以路径就和本地的不一样,本地的对照本地路径改就行了。
// add your custom on top
$primary: #426579;
// add new theme colors start:
// step 1 import dependence
@import "../node_modules/bootstrap/scss/_functions";
@import "../node_modules/bootstrap/scss/_variables";
@import "../node_modules/bootstrap/scss/_mixins";
// step 2 create your custome theme colors
$tertiary: #3fb247;
$custom-theme-colors:(
"tertiary": $tertiary
);
// step 3 各种map到必要的地方,
$theme-colors: map-merge($theme-colors, $custom-theme-colors);
// 补充:下面这几个是5.1才开始要的,5.0都不用。
$theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value");
$utilities-colors: map-merge($utilities-colors, $theme-colors-rgb);
$utilities-text-colors: map-loop($utilities-colors, rgba-css-var, "$key", "text");
$utilities-bg-colors: map-loop($utilities-colors, rgba-css-var, "$key", "bg");
// add new theme color end
//import bootstrap must
@import "../node_modules/bootstrap/scss/bootstrap";
-
写完就是要注意你的vscode软件最下面的那一行,右边会有个“Wath sass” 的东西,能点 ,点了就生成(custom.min.css 到 和scss文件同级的css文件下了),如果没成功会有报错(有个OUTPUT选项卡),像个console。
-
这个是随改随时生效,但是文件写得有问题就白跑并不覆盖之前生成好的.min.css 文件。
-
原本的html引入的link,无论是cdn方式的,还是本地的bootstrp.min.css,替换成这个最新的custome.min.css的路径。
-
就结束了,一次干活,永久享福。