CSS 用户界面样式及布局技巧

目录

界面样式

鼠标样式 cursor

轮廓线 outline

防止拖拽文本域 resize

vertical-align 属性应用

解决图片底部默认空白缝隙的问题

溢出的文字省略号显示

单行文本溢出显示省略号

多行文本溢出显示省略号

常见布局技巧

margin 负值的运用

文字围绕浮动元素​

行内块元素的巧妙运用

CSS 三角强化

画底和高不等的三角形

实例


界面样式

所谓界面样式,就是更改一些用户操作样式,以提高用户体验

  • 更改用户的鼠标样式
  • 表单轮廓
  • 防止表单域拖拽

鼠标样式 cursor

li {
    cursor: pointer;
}

设置或检索在对象上移动的鼠标指针采用何种系统预定义的光标形状

属性值描述
default小白 默认
pointer小手
move移动
text文本
not-allowed禁止

         

配合 js 使用

轮廓线 outline

给表单添加 outline: 0; 或者 outline: none; 样式之后,就可以去掉默认的蓝色边框

input {
    outline: none;
}

防止拖拽文本域 resize

textarea {
    outline: none;
    resize: none;
}
/*文本域最好写在一行,要不文本域内容会有缩进*/
<textarea name="" id="" cols="30" rows="10"></textarea>

vertical-align 属性应用

使用场景:经常用于设置图片或者表单(行内块元素)和文字垂直对齐

官方解释:用于设置一个元素的垂直对齐方式,但是这只对行内元素或者行内块元素有效

img {
    vertical-align: baseline;
}
描述
baseline默认。元素放置在父元素的基线上
top把元素的顶端与行中最高元素的顶端对齐
middle把此元素放置在父元素的中部
bottom把元素的顶端与行中最低的元素的顶端对齐

<div class="user">\
    <!--让图片和文字垂直居中-->
    <img src="images/user.png" alt="" style="vertical-align: middle">
    qq-lilei
</div>

解决图片底部默认空白缝隙的问题

bug:图片底侧会有一个空白缝隙,原因是行内块元素会和文字的基线对齐

主要解决方法有两种:

  1. 给图片添加 vertical-align: middle | top | bottom 等(只要不是 baseline 即可)。提倡使用
  2. 将 img 转换为块级元素 display: block;

溢出的文字省略号显示

单行文本溢出显示省略号

必须满足三个条件:

div {
    width: 200px;
    height: 100px;
    border: 3px solid darkcyan;
    /*1. 先强制一行内显示文本*/
    white-space: nowrap;  /*默认 normal 自动换行*/
    /*2. 超出的部分隐藏*/
    overflow: hidden;
    /*3. 文字用省略号替代超出的部分*/
    text-overflow: ellipsis;
}

多行文本溢出显示省略号

多行文本溢出显示省略号,有较大的兼容性问题,适合于 webKit 浏览器或移动端(移动端大部分是 webKit 内核)

.duohangslh {
    overflow: hidden;
    text-overflow: ellipsis;
    /*弹性伸缩盒子模型显示*/
    display: -webkit-box;
    /*限制在一个块元素显示的文本的行数*/
    -webkit-line-clamp: 2;
    /*设置或检索伸缩盒对象的子元素的排列方式*/
    -webkit-box-orient: vertical;
}
<div class="duohangslh">别后音杳魂梦茫,未悔相识,纵天各一方。</div>

更推荐后端人员实现,后端人员可以设置显示多少字,操作更简单

常见布局技巧

  1. margin 负值的运用
  2. 文字围绕浮动元素
  3. 行内块的巧妙运用
  4. CSS 三角强化

margin 负值的运用

li {
    float: left;
    list-style: none;
    width: 100px;
    height: 100px;
    border: 2px solid darkcyan;
    margin-left: -1px;
}

1. 让每个盒子 margin 往左侧移动 -1px 正好压住相邻盒子的边框

2. 鼠标经过某个盒子的时候,提高当前盒子的层级即可(如果没有定位,则加相对定位(保留位置);如果有定位,则加 z-index )

ul li:hover {
    position: relative;
    border: 2px solid orange;
}

文字围绕浮动元素

巧妙运用浮动元素不会压住文字的特性

        <div class="box">
            <div class="box1">
                <img src="images/huojian.jpg" alt="">
                <p>美媒推荐火箭关注三小将,两大3D侧翼入围,16+5双能卫又上榜</p>
            </div>
            <div class="box2">
                <img src="images/huren.jpg" alt="">
                <p>太阳保罗双喜临门,联盟重罚贝弗利,湖人交易19+5控卫方案出炉</p>
            </div>
        </div>
* {
    margin: 0;
    padding: 0;
}
.box {
    margin: 0 auto;
    width: 628px;
    height: 220px;
}
.box1,
.box2 {
    width: 628px;
    height: 105px;
    padding: 10px;
}
.box img {
    float: left;
    margin-right: 10px;

}
.box p {
    font: 800 25px '黑体';
}

效果图

行内块元素的巧妙运用

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>hang</title>
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
        <div class="box">
            <a href="#" class="prev"> &lt; 上一页</a>
            <a href="#">1</a>
            <a href="#" class="current">2</a>
            <a href="#">3</a>
            <a href="#">4</a>
            <a href="#">5</a>
            <a href="#">6</a>
            <a href="#">7</a>
            <a href="#">8</a>
            <a href="#">9</a>
            <a href="#">10</a>
            <a href="#" class="next">下一页 &gt; </a>
            到第
            <input type="text">
            页
            <button>确定</button>
        </div>
    </body>
</html>
* {
    margin: 0;
    padding: 0;
}
.box {
    text-align: center;
    padding: 50px;
}
.box a {
    display: inline-block;
    width: 36px;
    height: 36px;
    line-height: 36px;
    text-align: center;
    color: black;
    background-color: #fff;
    font-size: 18px;
    text-decoration: none;
    border: 1px solid #fff;
    border-radius: 8px;
}
.box a:hover {
    background-color: #2d58c1;
    border: 0px;
}
.box .prev,
.box .next {
    width: 85px;
    height: 36px;
}
.box .current {
    background-color: #2d58c1;
}
.box input {
    display: inline-block;
    width: 40px;
    height: 30px;
    font-size: 18px;
    line-height: 20px;
    text-align: center;
    border: 1px solid rgba(0,0,0,.3);
    border-radius: 5px;
}
.box button {
    display: inline-block;
    width: 50px;
    height: 28px;
    font-size: 16px;
    text-align: center;
    margin-left: 5px;
}

CSS 三角强化

画底和高不等的三角形

.box {
    width: 0;
    height: 0;
    /*先将左边和下边的边框设为0*/
    border-bottom: 0;
    border-left: 0;
    /*将上边框的宽度设为100px,颜色设为透明*/
    border-top: 100px solid transparent;
    /*最后设置右边框的样式*/
    border-right: 50px solid darkcyan;
}

实例

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
        <div class="box">
            <div class="box1"></div>
            <div class="box2">¥649.00</div>
            <div class="box3">¥699.00</div>
        </div>
    </body>
</html>
.box {
    position: relative;
    width: 250px;
    height: 48px;
    border: 1px solid black;
    margin: 0 auto;
    text-align: center;
    line-height: 48px;
}
.box1 {
    position: absolute;
    top: 0;
    left: 125px;
    width: 0;
    height: 0;
    /*先将左边和下边的边框设为0*/
    border-bottom: 0;
    border-left: 0;
    /*将上边框的宽度设为100px,颜色设为透明*/
    border-top: 48px solid red;
    /*最后设置右边框的样式*/
    border-right: 24px solid transparent;
}
.box2 {
    float: left;
    width: 125px;
    height: 48px;
    font-size: 25px;
    color: rgba(255,255,255,1);
    background-color: red;
}
.box3 {
    float: right;
    width: 125px;
    height: 48px;
    background-color: #fff;
    font-size: 18px;
    color: rgba(0,0,0,.5);
    text-decoration: line-through;
}

效果图 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSS网站布局实录:基于Web标准的网站设计指南(第2版)》内容提要: 本书是一本讲述基于Web标准的应用CSS进行网站布局设计与重构的典范之作。 本书以实例为主,一步步地告诉大家如何进行符合Web 2.0标准的CSS布局设计。具备了知识全面、完美应用(CSS选择器、样式继承、层叠、格式化、XML标签、CSS滤镜等。文本、图像、超链接、列表、菜单、网站导航、表单、数据表格、浮动布局CSS布局控制。),智能、创造型布局思维(智慧、完美视觉艺术效果之CSS布局技巧CSS Hack实践战略),Web技术团队倾情奉献(来自CSS布局与Web标准应用之先驱——闪客帝国... [显示全部] 《CSS网站布局实录:基于Web标准的网站设计指南(第2版)》图书目录: 第1章 Web标准与CSS布局概述 1.1 Web标准的历史及发展 1.1.1 什么是Web标准 1.1.2 Web表现层技术 1.1.3 Web标准的历史 1.2 Web标准的构成 1.2.1 结构(Structure) 1.2.2 表现(Presentation) 1.2.3 行为(Behavior) 1.3 Web标准有什么好处 1.4 CSS布局与table布局的区别 1.4.1 CSS 2.0的优势 1.4.2 传统的table布局CSS布局 1.5 向Web标准过渡 1.5.1 从HTML转向XHTML 1.5.2 发挥CSS 2.0的作用 1.6 常见问题 1.6.1 什么样的网站才符合Web标准 1.6.2 使用Web标准之后表格还有用吗 1.6.3 可以继续使用HTML来设计网页吗 1.6.4 为什么不直接使用到XML 1.6.5 学习CSS布局比表格困难吗 1.6.6 CSS布局是否意味着必须手写代码 1.6.7 什么叫网站重构 1.6.8 使用Web标准之后就不再存在兼容性问题了吗 1.6.9 有没有Web标准方面的优秀图书或网站 1.6.10 使用CSS设计只能做出简单的网页吗 1.7 面向现在与未来的设计 1.7.1 Web标准与Web 2.0 1.7.2 用户体验技术 1.7.3 用户体验设计的发展趋势 第2章 XHTML与CSS基础 2.1 XHTML基础 2.2 选择合适的DTD 2.3 选择合适的标签 2.4 给CSS留下接口 2.5 良好的XHTML编写习惯 2.6 CSS语法结构 2.6.1 CSS属性与选择符 2.6.2 类型选择符 2.6.3 群组选择符 2.6.4 包含选择符 2.6.5 id及class选择符 2.6.6 标签指定式选择符 2.6.7 组合选择符 2.6.8 伪类及伪对象 2.6.9 通配选择符 2.7 CSS数据单位 2.8 应用CSS到网页中 2.8.1 行间样式表 2.8.2 内部样式表 2.8.3 外部样式表 2.9 样式优先权问题 2.9.1 写法优先权 2.9.2 选择符优先权 2.9.3 样式继承 2.9.4 !important语法 2.10 代码注释 2.11 CSS开发环境与调试环境 第3章 CSS网页布局与定位 3.1 认识div 3.1.1 div是什么 3.1.2 如何使用div 3.1.3 理解div 3.1.4 并列与嵌套div结构 3.1.5 使用合适对象来布局 3.2 一列固定宽度 3.3 一列宽度自适应 3.4 二列固定宽度 3.5 二列宽度自适应 3.6 两列右列宽度自适应 3.7 二列固定宽度居中 3.8 三列浮动中间列宽度自适应 3.9 高度自适应 3.10 盒模型详解(.Box Model) 3.10.1 什么是盒模型 3.10.2 盒模型的细节 3.10.3 上下margin叠加问题 3.10.4 左右margin加倍问题 3.11 深入浮动(Float) 3.11.1 文档流(Document Flow) 3.11.2 浮动定位 3.11.3 浮动的清理(Clear) 3.11.4 何时选用浮动定位 3.12 绝对定位与相对定位 3.12.1 绝对定位 3.12.2 相对定位 3.12.3 何时选用绝对与相对定位 第4章 CSS网站元素设计 4.1 用CSS设计网站导航 4.1.1 横向导航 4.1.2 纵向导航 4.1.3 下拉及多级弹出式菜单 4.1.4 门户网站的导航设计(闪客帝国) 4.2 背景控制 4.2.1 背景颜色 4.2.2 背景图片 4.2.3 背景定位 4.2.4 背景滚动 4.2.5 背景属性缩写 4.2.6 基于背景控制的导航优化 4.3 使用列表元素 4.3.1 ul无序列表 4.3.2 ol有序列表 4.3.3 改变项目符号样式 4.3.4 使用图片自定义项目符号 4.3.5 使列表变为段落 4.3.6 列表缩进排版 4.3.7 复杂列

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值