分享好友 最新动态首页 最新动态分类 切换频道
CSS进阶技巧与最佳实践
2024-12-26 21:42

1.display:none与visibility:hidden的区别
相同:他们都能让元素不可见
区别

CSS进阶技巧与最佳实践

  • display:none会让元素完全消失,不再占据任何空间;visibility:hidden会让元素不可见但元素本来的空间继续占据,只是内容不可见。
  • display:none是非继承属性,子孙节点会跟随父节点一起消失,即使修改子孙节点属性也无法显示;visibility:hidden是继承属性,子孙节点继承父节点消失,但通过设置visibility属性可以让子孙节点显示。

2.link与@import的区别

  • link是HTML方式@import是CSS方式
  • link最大限度支持并行下载@import过多嵌套导致串行下载
  • link可以通过rel="alternate stylesheet"指定候选样式
  • @import必须在样式规则之前,可以在css文件中引用其他文件
  • 总体来说:link优于@import

3.CSS有哪些继承属性

  • 关于文字排版的属性
    font
    word-break
    letter-spacing
    text-align
    text-rendering
    word-spacing
    white-space
    text-indent
    text-transform
    text-shadow
  • line-height
  • color
  • visibility
  • cursor

4.外边距折叠
外边距折叠就是margin-collapse

  • 两个相邻的外边距都是正数时,折叠结果是他们两者之间较大的值
  • 两个相邻的外边距都是负数时,折叠结果是他们两者绝对值的较大值
  • 两个外边距一正一负时,折叠结果是两者相加的和

5.标准CSS盒子模型和低版本IE的盒子模型

  • css盒模型也称标准(W3C)盒模型,ie盒模型也称怪异盒模型
  • 标准盒模型:元素宽度 = width + padding + border + margin
  • 怪异盒模型:元素宽度 = width + margin

6.CSS的选择器

  • id选择器"#id"
  • 类选择器".class"
  • 标签选择器(“div,h1,p”
  • 相邻选择器(“p1 + p2”
  • 子选择器(“ul > li”
  • 后代选择器(“ul li”
  • 通配符选择器"*“”
  • 属性选择器(“a[rel = ‘external’]”
  • 伪类选择器(“a:hover”

7.CSS3新增伪类

  • li:first-of-type 选择属于其父元素的首个元素的每个元素
  • li:last-of-type 选择属于其父元素的最后一个元素的每个元素
  • li:only-of-type 选择属于其父元素唯一的元素的每个元素
  • li:only-child 选择属于其父元素的唯一子元素的每个元素
  • li:nth-child(n) 选择属于其父元素的第n个子元素的每个元素
  • :after 在元素之前添加内容,常用来清除浮动
  • :before 在元素之后添加内容
  • :enabled 选择器匹配每个已启用的元素,常用在表单元素上
  • :disabled 控制表单按钮的禁用状态
  • :checked 单选框或者复选框的选中状态

8.如何居中div?如何居中一个浮动元素?如何让绝对定位的div居中
如果需要居中的元素为常规流中的lnline元素,为父元素设置text-align:center即可实现元素居中

如果需要居中的元素为block元素:1.为元素设置宽高 2.设置左右maigin为auto

 

如果需要居中的元素为浮动元素:1.为元素设置宽高 2.position:relative 3.浮动方向偏移量设置为50% 4.浮动方向上的margin设置为元素宽高的一半乘以-1

 

如果需要居中的元素为绝对定位元素:1.为元素设置宽高 2.设置左右偏移量都为0 3.设置左右外边距都为auto

 

9.如何竖直居中一个元素

  • 绝对定位居中
  • 如果居中元素为行内元素,可以设置父级height与line-height相等
  • 设置margin/padding居中
  • 相对位置偏移居中
  • flex居中设置align-item:center

10.display有哪些值以及他们的作用

  • block 块级元素,独占一行,可以设置宽高
  • inline-block 内联块元素,并排显示,可以设置宽高
  • inline 内联元素,并排显示,不可以设置宽高
  • none 此元素必会被显示
  • list-item 此元素会作为列表显示
  • table 此元素会作为块级表格来显示
  • inherit 规定应该从父元素继承display属性的值

11.position及relative和absolute定位原点

  • absolute 绝对定位,相对于上一个定位的父元素进行定位
  • fixed 固定定位,相对于浏览器窗口进行定位
  • relative 相对定位,相对于其正常位置进行定位
  • static 默认值,没有定位,元素出行在正常文档流中
  • inherit 规定从父元素继承position属性的值

12.CSS3有哪些新特性

  • 新增选择器 li:nth-child(n)
  • 弹性盒模型 display:flex
  • 多列布局 column-count:num
  • 媒体查询 @media(max-width:520px){.box:{column-count:1}}
  • 个性化字体 @font-face{font-family:BorderWeb;src:url(BORDERW0.eot)}
  • 颜色透明度 color:rgba(255,0,0,0.5)
  • 圆角 border-radius:50%/20px
  • 渐变 background:linear-gradient(red,gold,blue)
  • 阴影 box-shadow:2px 2px 2px rgba(0,64,128,0.5)
  • 倒影 box-reflect:below 2px
  • 文字装饰 text-stroke-color:red
  • 文字溢出 text-overflow:ellipsis
  • 背景效果 background-size: 100px 100px
  • 边框效果 border-image:url(ak.png) 0 10
  • 平滑过渡 transition:all 0,3s ease-in 0.1s
  • 动画 @keyframes anim-1 {50%{border-radius:50%}} animation:anim-1 1s
  • 转换
    1.旋转 transform:rotate(90deg)
    2.倾斜 transform:skew(90deg,-10deg)
    3.位移 transform:translate(20px,20px)
    4.缩放 transform:scale(0.5)

12.用css创建一个三角形的原理
把上左右三边的边框隐藏掉

 

13.一个满屏品字布局如何设计

  • 上面的div宽度100%
  • 下面的两个div分别宽50%
  • 然后用float或者inline使其不换行即可

14.li与li之间有空白间隙是什么原因引起的,如何解决
行框的排列会受到中间空白(回车/空格)等的影响,因为空格也属于字符,这些空白也会被应用样式占据空间,所以会有间隔,把字体大小设置为0就可以解决了

15.display:inline-block 什么时候会显示间隙

  • 相邻的inline-block元素之间有换行或者空格的情况下
  • 非inline-block水平元素设置为inline-block也会有水平间距
  • 可以借助vertical-align:top消除垂直间隙
  • 可以在父级加font-size:0消除垂直间隙
  • 把li标签写到同一行可以消除垂直间隙

16.display:inline-block间隙怎么解决
移除空格、使用margin负值、使用font-size:0、letter-spacing、word-spacing

17.css定义的权重
1.如果一个声明来自style属性而不是选择器,记做1或者a=1(在一个html文档中,元素"style"的值是样式表规则,这个规则中没有选择器,所以a=1,b=0,c=0,d=0
2.选择器中id属性的个数记做b
3.选择器中其他属性以及伪类的个数记做c
4.选择器中元素以及伪元素的个数记做d

 

a,b,c,d只是在各自位置里数字的累加,而不会越级
权重最高的是!imporant,会覆盖以上所有,行内样式也高不过他

18.CSS优先级算法如何计算

  • 优先级就近原则,同权重情况下样式定义最近者为准
  • 载入样式以最后载入的为准
  • 优先级为:!important > id > class > tag

19.浮动与清除浮动
浮动的元素可以向左或者向右移动,直到他的外边缘碰到包含框或者另一个浮动元素的边框为止。由于浮动元素脱离了标准文档流,所以文档的标准文档流的块框表现的就像浮动元素不存在一样。浮动的元素就会漂浮在标准文档流的元素上
解决办法
1.父级元素定义伪类:after和zoom

 

2.在结尾处添加空div clear:both

 

3.父元素设置height
4.父元素设置overflow:hidden
5.父元素设置overflow:auto
6.父元素也一起浮动
7.父元素定义display:table
8.结尾处添加 br 标签 clear:both

20.box-sizing常用的属性有哪些,分别有什么作用

  • box-sizing:content-box 默认的标准盒模型元素效果
  • box-sizing:border-box 触发怪异盒模型元素的效果
  • box-sizing:inherit 继承父元素 box-sizing 属性的值

21.列举几种隐藏元素的方法

  • visibility:hidden 这个属性只是简单的隐藏某个元素,但元素占用的空间仍然存在
  • opacity:0 CSS3属性,设置0可以使一个元素完全透明
  • position:absolute 设置一个很大的left负值定位,使元素定位在可见区域之外
  • display:none 元素会变得不可见,并且不再占用文档空间
  • transform:scale(0) 将一个元素无限缩小,元素将不可见,元素原来的位置将被保留
  • HTML5属性,效果和display:none相同,但这个属性用于记录一个元素的状态
  • height:0 将元素高度设为0,并消除边框
  • filter:blur(0) CSS3属性,将一个元素的模糊度设置为0,从而使元素不可见

22.rgba() 和 opacity 的透明效果有什么不同

  • opacity 作用于元素以及元素内的所有内容的透明度
  • rgba() 只作用于元素自身的颜色或其背景色,子元素不会继承透明效果

23.css 属性 content 有什么作用
content 属性专门应用在 before / after伪元素上,用于插入额外内容或样式

24.请解释一下 CSS3 的 Flexbox(弹性盒模型)以及适用场景
Flexbox 用于 不同尺寸屏幕中创建可自动扩展和收缩布局

25.请列出多种高等布局

  • 在列的父元素上使用这个背景图进行Y轴铺放,从而实现一种高等列的假象
  • 模仿表格布局等高列效果:兼容性不好,在IE6-7无法正常运行
  • css3 flexbox 布局:.container{display:flex;align-items:stretch}

26.圣杯布局的实现原理
要求:三列布局,中间主体内容前置且宽度自适应,两边内容定宽
好处:重要的内容放在文档流前面可以优先渲染
原理:利用相对定位、浮动、负边距布局,而不添加额外标签

 

27.什么是双飞翼布局?实现原理
双飞翼布局:对圣杯布局的改进,消除其相对定位布局的局限性
原理:主体元素设置左右边距,预留两翼位置。左右两栏使用浮动和负边距归位,消除相对定位

 

28.在 CSS 样式中常使用 px、em 在表现上有什么区别

  • px 相对于显示器屏幕分辨率,无法使用浏览器字体放大功能
  • em 值并不是固定的,会继承父级的字体大小:em = 像素值 / 父级 font-size

29.为什么要初始化 CSS 样式

  • 不同浏览器对有些标签样式的默认值解析不同
  • 不初始化 CSS 会造成各种浏览器之间的页面显示差异
  • 可以使用 reset.css 或 Normalize.css 做 CSS 初始化

25.reset.css 和 Normalize.css 理解
reset.css 意为重置默认样式。HTML 中大部分标签元素在网页显示中都有一个默认属性值,通常为了避免重复定义元素样式,需要进行重置默认样式

Eric Meyer(CSS Reset)推荐

 

Normalize.css 只是一个很小的 css 文件,但他在默认的 HTML 元素样式上提供了跨浏览器的高度一致性。相比于传统的 css reset,Normalize.css 是一种现代化的,为 HTML5 准备的优质替代方案。
Normalize.css 的作用

  • 保护有用的浏览器默认样式而不是完全去掉他们
  • 一般化的样式:为大部分 HTML 元素提供
  • 修复浏览器自身的 bug 并保证各浏览器的一致性
  • 优化 CSS 可用性
  • 解释代码:用注释和详细的文档

26.什么是 FOUC(Flash of Unstyled Content)?如何避免 FOUC

  • 当使用 @import 导入 CSS 时,会导致某些页面在 IE 出现奇怪的现象:没有样式的页面内容显示瞬间闪烁,这种现象称为“文档样式短暂失效“,简称为 FOUC
  • 产生原因:当样式晚于结构性 html 加载时,加载到样式变时,页面将停止之前的渲染
  • 等待此样式表被下载和解析后,再重新渲染页面时,期间导致短暂的花屏现象
  • 解决办法:使用 link 标签将样式表放在文档 head 里

27.介绍使用过的 CSS 预处理器

  • CSS 预处理器基本思想:为 CSS 增加了一些编程的特性(变量、逻辑判断、函数等)
  • 开发者使用这些语言进行 Web 页面样式设计,再编译成正常的 CSS 文件使用
  • 使用 CSS 预处理器可以使 CSS 更加简洁、适应性更强、可读性更强,无需考虑兼容性
  • 最常用的 CSS 预处理器语言包括:Sass(SCSS) 和 LESS

28.CSS 优化、提高性能的方法

  • 多个 css 合并,尽量减少 HTTP 请求
  • 将 css 文件放在页面最上面
  • 移除空的 css 规则
  • 避免使用 CSS 表达式
  • 选择器优化嵌套,尽量避免层级过深
  • 充分利用 css 继承属性,减少代码量
  • 抽象提取公共样式,减少代码量
  • 属性值为0时,不加单位
  • 属性值为小于1的小数时,省略小数点前面的0
  • css 雪碧图

29.浏览器是怎样解析 CSS 选择器的

浏览器解析 CSS 选择器的方式是从右到左

30.在网页中的应该使用奇数还是偶数的字体

在网页中应该使用 偶数 字体

  • 偶数字体相对更容易和 web 设计的其他部分构成比例关系
  • 使用奇数字体时文本段落无法对齐
  • 宋体的中文网页排布中使用最多的就是 12 和 14

30.margin 和 padding 分别适合什么场景使用

  • 需要在 border 外侧添加空白,且空白处不需要背景色时使用 margin
  • 需要在 border 内侧添加空白,且空白处需要背景色时使用 padding

31.抽离样式模块怎么写

CSS可以拆分为 2 部分:公共 CSS 和 业务 CSS

  • 网站的配色,字体,交互提取出为公共 CSS。这部分 CSS 命名不应涉及具体的业务
  • 对于业务 CSS,需要有统一的命名,使用公用的前缀。可以参考面对对象的 CSS

32.元素竖向的百分比设定是相对于容器的高度嘛

  • 如果是 height 的话,是相对于容器高度
  • 如果是 padding-height,margin-height 则是相对于容器的宽度

33.全屏滚动的原理是什么,用到了 CSS 的哪些属性

  • 原理类似图片轮播原理,超出隐藏部分,滚动时显示
  • 可能用到的 CSS 属性:overflow:hidden;transform:translate(100%,100%);

34.什么是响应式设计,响应式设计的基本原理是什么,如何兼容低版本的 IE

  • 响应式设计就是网站能够兼容多个终端,而不是为每个终端做一个特定的版本
  • 基本原理就是利用 CSS3 媒体查询,为不同尺寸的设备适配不同样式
  • 对于低版本的 IE ,可采用 JS 获取屏幕宽度,然后通过 resize 方法实现兼容
 

35.什么是视差滚动效果,如何给每页做不同的动画

  • 视差滚动是指多层背景以不同的速度移动,形成立体的运动效果,具有非常出色的视觉体验
  • 一般把网页解剖为:背景色、内容层和悬浮层。当滚动鼠标滚轮时,各图层以不同速度移动,形成视差

实现原理

  • "页面滚动条"作为"视差动画进度条"
  • "滚轮刻度"当作"动画帧度"去播放动画
  • 监听 mousewheel 事件,事件被触发即播放动画,实现"翻页"效果

36.a 标签上四个伪类的执行顺序是怎样的

LoVe HAte => “爱恨原则”
link > visited > hover > active

37.伪元素和伪类的区别和作用

伪元素:在内容的前后插入额外的元素或样式,但是这些元素实际上并不在文档中生成,他们只在外部显示可见,但不会在文档的源代码中找到他们,因此,称为 “伪” 元素。
eg

 

伪类:将特殊的效果添加到特定选择器上。他是已有元素上添加类别的,不会产生新的元素。
eg

 

38. ::before 和 :after 中双冒号和单冒号的区别

  • 在 CSS 中伪类一直用 : 表示,如 :hover,:active等
  • 伪元素在 CSS1 中已存在,当时语法是用 : 表示,如 :before 和 :after
  • 后来在 CSS3 中修订,伪元素用 :: 表示,如 ::before 和 ::after ,以此区别伪元素和伪类
  • 由于低版本 IE 对双冒号不兼容,开发者为了兼容各浏览器,继续使用 :after 这种老语法表示伪元素
  • 综上所述: ::before 是 CSS3 中伪元素的新语法,:after 是 CSS1 中存在的、兼容 IE 的老语法

39.如何修改 Chrome 记住密码后自动填充表达的黄色背景

  • 产生原因:由于 Chrome 默认会给自动填充的 input 表单加上 input:-webkit-autofill 私有属性造成的
  • 解决方案1:在 form 标签上直接关闭表单的自动填充:autocomplete = “off”
  • 解决方案2:input:-webkit-autofill {background-color:transparent;}

input[type = search] 搜索框右侧小图标如何美化

 

40.网站图片文件,如何点击下载,而非点击预览

 

41.iOS safari 如何阻止"橡皮筋效果"

 

42.你对 line-height 是如何理解的

  • line-height 指一行字的高度,包含了字间距,实际上是下一行基线到上一行基线距离
  • 如果一个标签没有定义 height 属性,那么其最终表现的高度是由 line-height 决定的
  • 一个容器没有设置高度,那么撑开容器高度的是 line-height 而不是容器内的文字内容
  • 把 line-height 设置为 height 一样的值可以实现单行文字的垂直居中
  • line-height 和 height 都能撑开一个高度,height 会触发 haslayout,而 line-height 不会

43.line-height 三种赋值方式有何区别(带单位、纯数字、百分比)

  • 带单位:px 是固定值,而 em 会参考父元素 font-size 值自行计算自身的行高
  • 纯数字:会把比例传递给后代。例如,父级行高为 1.5,子元素字体为 18px,则子元素的行高为 1.5 * 18 = 27px
  • 百分比:将计算的值传递给后代

44.设置元素浮动后,该元素的 display 值会如何变化

设置元素浮动后,该元素的 display 值自动变成 block

45.怎么让 Chrome 支持小于 12px 的文字

 

46.让页面里的字体变清晰,变细用 CSS 怎么做(IOS手机浏览器字体齿轮设置)

 

47.font-size 属性 oblique 是什么意思

font-size:oblique; 使没有 italic 属性的文字实现倾斜

48.如果需要手写动画,你认为最小时间间隔是多久

16.7ms
多数显示器默认频率是 60Hz,即 1秒刷新 60 次,所以理论上最小间隔:1s / 60 * 1000 = 16.7ms

49.overflow:scroll 时不能平滑滚动的问题怎么处理

监听滚轮事件,然后滚动到一定距离时用 jquery 的 animate 实现平滑效果

50.一个高度自适应的 div,里面有两个 div,一个高度 100px,希望另一个填满剩下的高度

  • 方案1:.sub { height : calc { 100% - 100px };}
  • 方案2:.container { position : relative;} .sub { position : absolute; top : 100px; bottom : 0;}
  • 方案3:.container { display : flex; flex-drection : column;} .sub { flex : 1}

51.CSS 中类 class 和 id 的区别

对于 CSS 而言,id 和 class 都是选择器,唯一不同的地方在于权重不同。
对于 html 而言,id 和 class 都是 dom 元素的属性值。不同的地方在于 id 属性的值是唯一的,而 class 属性可以重复。
id 还有一个特性是锚点功能,当浏览器地址栏有一个 #xxx,页面会自动滚到 id = xxx 的元素上面

52.如何优化网页的打印样式

 

其中 media 指定的属性就是设备,显示器上就是 screen,打印机则是 print,电视是 tv,投影仪是 projection。

 

打印样式注意事项

  • 打印样式表中最好不要用背景图片,因为打印机不能打印 CSS 中的背景。如要显示图片,请用 html 插入到页面中
  • 最好不要使用像素最为单位,因为打印样式表要打印出来的会是实物,所以建议使用 pt 和 cm
  • 隐藏掉不必要的内容
  • 打印样式表中最好少用浮动属性,因为他们会消失

53.请问为何要使用 transform 而非 absolute positioning

  • 使用 transform 或 position 实现动画效果时是有很大差异
  • 使用 transform 时,可以让 GPU 参与运算,动画的 FPS 更高
  • 使用 position 时,最小的动画变化单位是 1px,而使用 transform 参与时,可以做到更小
  • 功能都一样,但是 transform 不会引起浏览器的重绘和重排

反之

  • transform 改变 fixed 子元素的定位对象
  • transform 改变元素层叠顺序

54.请解释 CSS sprites,以及你要如何在页面或者网站中实现它

  • CSS Sprites 其实就是把网页中的一些背景图片整合到一张图片文件中,再利用 CSS 的 “background-image”,“background-repeat”,“background-position” 的组合进行背景定位,background-position 可以用数字能精准的定位出背景图片的位置
  • CSS Sprites 为一些大型的网站节约了带宽,提高了用户的加载速度和用户体验,不需要加载更多的图片

55.SVG 样式的书写

SVG等效的 CSSfillbackground-color 或 colorfill-opacitybackground-color 或 color 设置 rgba/hslaopacityopacitystrokeborder-colorstroke-widthborder-thicknessstroke-opacityborder-color 设置 rgbarx,ryborder-radius

下面的属性在 SVG 和 CSS 中是一样的,只是在 SVG 的 transformations 和 dimensions 中稍有区别

  • font-family,font-size,font-style,font-variant 和 font-weight
  • width 和 height
  • scale,rotate,skew
最新文章
社会实践报告AI生成关键词有哪些:类型、内容与生成器解析
随着人工智能技术的不断发展在各个领域的应用日益广泛,其中之一便是辅助生成社会实践报告。社会实践报告是学生、教师、研究人员等实行社会实践活动的必不可少记录途径而生成关键词则可以帮助使用者快速梳理报告内容,提升撰写效率。本文将
黑河爱采购登录
百度爱采购优势:B2B企业对话:百度爱采购为不同企业提供了一个平台,不带任何中间差价,让企业运行的每一项业务都能得到快、准、狠的解决方法。全网上询价:低档、中档产品全覆盖,多种询盘方式发布购买意向信息,帮助卖家和商家撮合交易
高清美女写真生成:探索最强的AI绘画工具与实用教程
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=030001_yljdaimn 在这个智能科技飞速发展的时代,AI生成图像技术让我们的创作变得更加便利,尤其是在美女写真
神将防盗门快速售后24小时人工400-(问题解决) - 热点 - 百科知识-蓝心网
神将防盗门售后24小时维修服务热线:400-658-8618。神将防盗门全市各区售后服务点热线号码。☎:400-658-8618神将防盗门售后服务,秉承“诚信为本、客户至上”的服务态度和“以客户为中心”的服务指导思想,不仅真诚地为用户提供先进、高质
河间网站建设,科技重塑世界,开启未来生活新篇章体验
本文目录导读:前沿技术,重塑网站新形象功能丰富,满足多元需求安全稳定,保障用户权益极致体验,激发科技爱好者兴趣成功案例,见证实力未来展望,科技改变生活立即行动,加入河间网站网站建设的大潮身处数字化浪潮之巅,河间网站网站建设
部分漫画及资料稀缺资源汇总
省流说明:本期更新了日本第一部纯爱漫画《爱与诚》,顶尖编剧梶原一骑和顶尖漫画大师永安巧,共同创作的经典大作。看男子汉如何抒写爱情!一、资源1、《神圣传说》穆逢春和十月天宫的《神圣传说》可以说是国内知名度最高的圣斗士同人画集
快看漫画:画风绝美神仙剧情的9部韩漫安利,总有一部适合你
各位亲爱的小伙伴们,今天小编不带什么别的,直接就给大家献上9部画风绝美、剧情神仙的韩漫安利,让你们在业余时间也能感受到那份甜蜜与感动。无论你是恋爱中的小情侣,还是独自享受生活的小仙女,总有一部适合你!让我们一起来看看这些热
湖南SEO网络推广优化实战指南与学习之道
本攻略深入解析湖南地区SEO网络推广优化策略,涵盖学习路径、实践技巧。从关键词研究、内容优化到技术SEO,助您掌握湖南地区网络推广的核心方法,提升网站排名与流量。随着互联网的快速发展,SEO(搜索引擎优化)和优化已经成为企业提升品
漫蛙manwa防丢失漫画
漫蛙manwa防丢失漫画是款相当新颖的漫画阅读软件,尽情的沉浸在自己喜欢的漫画资源当中,所有的漫画都是免费为用户提供,拥有着非常便捷的搜索方式,软件上的漫画是高清正版的,这样在我们没有网络的时候也可以很好的观看动漫。1、网络连接
SEO人员,如何为一个关键词集权?
seo工作中会出现各种不一样的要求,比如行业非常细分,关键词极其稀少,只有几个或者一个有指数的关键词,这种情况客户要求只优化一个关键词,我们应该怎么做呢?一.站内优化 在做这种特殊的seo优化时
相关文章
推荐文章
发表评论
0评