CSS

花木瑞记录约 3243 字...

how to become a master of css

2023-04-01 21:40:42
要说... 我真是... 弱。
css确实有太多属性根本记不清要现看,但是,还是要有那些,处理经典问题的方案,以及整体思路。...

mdn 的官网很好,真的很好。也许一开始我体会不到...

稍微分一下学习的几个阶段。意外=>视频/手把手,这里是基础的补常识的阶段(但这里,有可能也是选定方向的时候)=>炫酷的小东西,博客=>项目,实战或者失败=>理解,思考,总结,官方文档或者别的一些更深入更成体系的东西。
我...找不对方向,瞎晃了好久... 再或,也许更多的人就是,...好早就能明确的知道一切并规划好的... md 反正不是我。不过要再说... 所谓的对的事情、正路,如果找到、维持它们会那么难,为什么它们还是正路...

回到css的话,反正人家文档写那么好..我就摘一些关键词。之前写的...是真的,不用看了,都是,fw。

normal flow,box model,position
block or inline or etc...
some special selector,cascade

还有个... bfc。这个概念...文档里也没咋细说因为感觉没吊用,我目前的理解是,bfc会创造一个小天地,一个独立的新的normal flow,这个新的normal flow里面的元素,不会影响到外面的元素,也不会被外面的元素影响。
所谓的创建 bfc 之后可以解决的问题,通常是触发父元素的 bfc,追上那个飘了的子元素,或者让子元素们重新拥有一个normal flow的环境又不会影响到别人。 display: flow-root; 或者任何,不听原始normal flow话的东西。

再一个,css3 的规范开始搞模块化,layout,animation,transform,filter,这一个个方向,算是,扩展疆域吧。

2023-02-03 09:43:45

如何成为 css 大师。嗯...去年六七月份我就吐槽我不会css,那堆东西着实有些杂乱。脑残的东西基本都有“历史原因”,所以,要理解 CSS,就看一下 web 的历史。

web 的 html css js 在最开始都是,...十分孱弱,它们一开始的主要服务目标,就只是展示一个像样的文档出来,对的,是以文档为中心设计的。

  • 提到这里我会想提一下,宽与高的的差异...。这也许要从人类现在普遍的阅读习惯开始 bb,基本都是从左到右然后从上到下,所以宽度固定,然后上下的滚动这个设计就变得十分...舒适合理(同时我也在想如果现在的人还像以前,像从竹简时代那种从左到右的阅读文字,那现在的软件设计会不会也是完全不一样的形态...)。

css 最基本的一个东西,是 normal flow,而它则就是针对文档的一个默认布局。布局方面有的只是同行、换行,inline block 这两个简单的操作。这很...弱,甚至为了搞一个文字环绕图片的效果,都要另外找 float 实现...

  • 为什么我要从布局开始 bb ?...可能和画画很像,常人画画都是先打骨架,然后再填充细节。那种上来就直接一块块糊细节还能画的很好的...是神仙。而布局,对画面而言,就是种骨架。当然,如果特别小白完全一无所知的,这里搞不定,先去了解那些小玩具也是可以的。

也许在一开始,或者只需要处理文档的时期,这就够了。

但现在的网页都是什么样的?SPA,除了各种导航栏,还有各种各样的feed,交互,而这些,除了它们自己本身具体的功能、内容,也都需要依赖一个布局系统来将它们合理的安排到屏幕上。

  • 而对于非文档类的内容,长与宽的含义就没有那么清晰了,就像游戏,现存的大部分都是带动作交互的动画游戏,在手机上玩甚至基本都要把屏幕横过来...这里就更不可能有什么滚动,3d游戏的视角变换是完全不一样的体验。而这些,与传统的文档 ,css 的 normal flow 也基本没关系了...

layout

display: block | inline | inline-block | table | etc

好了说点具体点东西吧。block,inline 不想写...就是normal flow。

另外可能会有 Block Formatting Contexts,Inline Formatting Contexts...有没有TFC FFC FGC...感觉就是名字而已,唬人。

box model

也许这里,应该从 box model 开始。

但我不想 bb,我丢两个图在这里。

box-modelbox-model-understanding

table

表格布局,是被扫进历史垃圾堆的...但是,之后的 flex grid 都有它的影子。就只是提一下,想想 excel 的拉长缩小,合并单元格...

multiple column又是谁家的?

float

就是说...也是个基本进了垃圾堆的方式

flex & grid & column-span & etc

是很棒的方式,很好用,但是画面这事吧...感觉咋讲都不太好讲。还有,这里甚至可以说是我开始接触现代 css 并感受到它强大的地方...之后还有动画、响应式...

position

对,还有一个 position 在布局里也要提一下,要说的话...相比上面提到的那些,它不适合做布局,但是top、right、bottom、left可以很好的配合JavaScript。嗯,我当初那个瀑布流就是 js + 基本的 position 做的...真是...nc。那时我都不知道还有 DOMRect 这个类型呢...反正ncncncncnc,现在看是完全就是笨蛋,岂止是笨蛋,简直就是笨蛋。

但是之后我那个雪花和 DOM 元素交互的,主要就是玩 JS 的那个脚本,和 position 的配合倒合理的感觉。

snowfallopen in new window

position: static | absolute | relative | fixed | sticky

static: 默认值,元素在 normal flow 中,top、right、bottom、left和z-index属性不起作用。

relative:生成相对定位的元素,相对于其正常位置进行定位元素的位置通过 left、right、top、button 属性进行规定. 注意,相对定位脱离文档流,因此占据的空间仍然保留。相对定位的元素可以通过 z-index 进行层次分级。

absolute:生成绝对定位元素。使元素脱离文档流,并相对于其包含块进行定位,包含块可能是文档中的另一个元素或者是初始包含块,元素原先在正常文档流中所占的空间会会被后面元素占据;元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框;

绝对定位元素的包含块由离它最近的 'position' 属性'absolute'、'relative' 或者 'fixed' 的祖先元素创建。只要父级元素设置了position并且不是static(默认既是static),那么设定了absolute的子元素即以此为包含块(最近的); 如果都没有定义,那么就相对于整个文档body定位(注意不是相对于浏览器窗口定位)相对定位一般都是配合绝对定位元素使用。

“子绝父相”:子元素设置了position:absolute,父元素设置了position:relative,那么子元素的定位就是相对于父元素进行定位。这个可以做的有很多,分隔布局,加遮罩层,等等。

fixed:生成绝对定位元素,相对于浏览器窗口的定位。

通常配合z-index一起来使用。比如说网页上悬挂的聊天图标或者广告就是用了fixed。

sticky:生成粘性定位元素,可以根据 top 切换实际状态,从relative 到 fixed 之间的。原本需要 js 来实现的,那种 toc ,现在用上它就可以了。

others

主要就 bb 布局。其他的,日后再谈。


begin-date: 2022-12-16

嗯...就是说,学点css。

就说是,一开始的时候,css对我就只是改个元素大小颜色的小东西,没想过有其他的用处...
但是看了好多之后,css也好nb哦...现在的css..动画、布局、响应式啥的都整出来了。
不是说好了all in js的吗...为什么好多骚操作还是放到了html和css里面...嘤嘤嘤

而另一方面,如果要工程化,css写起来还是很操蛋。
大概是出现了三条路

  • 第一个是为了快速开发就出现了boostrap这样的组件库,被称为“组件化”。而针对热门的前端框架还有element-ui,antd等等,这些组件甚至不光是UI,连一部分逻辑都封进去了。缺点是什么?缺点就是没法自己定制,除非这些组件库本身开几个接口让定制,否则难以修改,下面有一个我在好久之前我尝试自己修改时的鬼畜效果。 component
  • 第二个是css预处理器,sass,less这种的,写的还是css,但是优化很多。
  • 第三个...大概是从postCss衍生出的tailwind、unocss这些叫做“原子化”的一种,感觉有点怪...它们将css的style的重做了一遍放在class里写,确实是不用写css了,新给出的class可能也的确清晰了些,但这些复杂度又重新转到了html文件里而且不像css还能拆出来。没咋用过。看起来有点憨。

更新一小下,SCSS 这种的,是要让 css 分离出去并且更强大;而原子化,则是要将css的控制重新插到 html 中;除了原子化还有 css in js 的...不过这个不怎么火。总之,css是就在css里,还是插到 html 里,还是交给 js... 其实都可以,也都有各自好处。


update: 2023-02-01

ps:boostrap 本身也有启动的意思,可能在很多项目都看到过这个名字命名的文件夹或者脚本什么的,不一定就是那个组件库啊哈。。

响应式布局

要知道,现代的布局方式 flex,grid,都是已经实现响应式布局的。而一些手动的操作,可以放进媒体查询,媒体查询的语法是

@media screen and (max-width: 600px) {
  /* ... */
}

其实,主要就是依赖屏幕宽度来进行元素排布的设计,因为网页的上下滚动是很常见的...你再长,滚动一下好了,但宽度却不应该这么随意的变化。

500 px 和 1000px

这两个个宽度,基本划分了,手机、平板、电脑的界限。但通常还是会有一个 800px 左右的数值,这个数字是一个细分,为更细致的应对屏幕宽度,也是对电脑浏览器非全屏时的一个应对。

是的... 我知道还有根据字体 size 来做,rem ,em 这些。 还有直接取到屏幕大小的 vw,vh,vmin,vmax ,或者百分比。

但是,px 也不是一个死硬的值,它尝试提供一种稳定的单位,但...很微妙也很有故事。以及,响应式的布局就是主要用 px + 媒体查询做,上面 rem 它们的目的并不在这里。

还有直接使用js获取屏幕大小,然后根据大小去选择渲染完全不同样式的组件与html结构的...这个的适配效果是可以做的最好的...但代价是什么呢?

css预处理

SCSS 和 LESS 做的最棒的可能就是允许css嵌套,有了作用域,以及变量的加强。

我主要看了一下 SCSS ,用 SCSS 去做网页的主题化...很棒的。

至于 tailwind ... emmm 因为没用过...但是就多主题和响应式布局这个问题,tailwind 会不会变得非常非常臃肿......当然如果直接写好好几个 html 然后由 js 去控制...。确实哦,反正要更加特异化的适配的话,这样也挺爽的。

update: 2023-02-06

我以为我会了,但是还是被 css 教做人。 md。...不是一回事啊。

update: 2023-02-22

我感觉我可以说自己会 css 了,但...在这玩意上花时间,真的很慌,都是小玩意,有些能做的很炫酷,但又觉得是无底洞。 国内常用的各种 xxx 管理系统,大部分也没啥美化的需求,这大概也是 tailwind 这些东西起不来的一个原因...

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.14.4