获得徽章 19
- display属性块行内块,行内元素区别:
块 block 高由内容撑开,宽度独占一行,可设置宽高,可设置padding,border
行内 inline 宽高由内容撑开,不独占一行,不可设置宽高,可设置padding,border,但垂直方向会在父级元素之外
行内块 inline-block 宽高由内容撑开,不独占一行,可设置宽高,可设置padding,border
常见的块级元素有div、p、h1-h6、ul、ol
常见的行内元素有span、a、img展开赞过33 - css选择器及其优先级:
选择器有:
属性选择器 *
标签选择器 a
属性选择器 [title]
伪元素选择器 ::before
类名选择器 .box
伪类选择器 :hover,:nth-child()
id选择器 #box
后代选择器 li a
子代选择器 ul > li
兄弟选择器 h1+p
优先级:
!important 无穷大
行内样式 1000
ID选择器 100
类名选择器,伪类选择器,属性选择器 10
标签选择器,伪元素选择器 1
通配符 0展开等人赞过评论6 - strapi是什么?
strapi是一个基于nodejs的CMS(内容管理系统),服务基于koa2,可以通过可视化页面简单的操作数据库建表、修改数据、配置权限等等。
对于前端开发者来说,使用Strapi的好处主要有以下几个:
简化后端开发:Strapi可以帮助前端开发者快速构建自己的后端API,这样就不必从头开始构建自己的后端应用程序,从而节省时间和精力。
管理数据:Strapi提供了一个可扩展的管理界面,可以方便地管理应用程序中的数据,例如添加、编辑、删除数据等。这对于前端开发者来说非常方便,可以让他们专注于前端开发,而不必担心后端管理。
与前端框架集成:Strapi支持与各种前端框架(例如React、Vue.js等)的集成,这使得前端开发者可以更加方便地使用Strapi构建自己的应用程序。展开赞过评论3 - ts中record类型:
将一个类型的所有属性值都映射到另一个类型上并创造一个新的类型;
实际使用: type TKeys = 'A' | 'B' | 'C'
interface IPeople {
name:string,
age?: number,
sex: string
}
type TRecord = Record<TKeys, IPeople>
// 等同于
type TRecord = {
B: IPeople;
C: IPeople;
A: IPeople;
}展开赞过评论3