由合并细线表格而产生的疑问与解答

一、背景

学习CSS之前制作的表格边框效果单一,且产生对于border属性的疑问,私下查找资料、写代码举例子,做总结。

二、深度理解table 中border 的定义

如下一个简单普通表格,代码如下:

<body>    <table  bordercolor="red"  border="1px"  width="300px" height="100px">        <tr>            <td>123</td>            <td>123</td>            <td>123</td>            <td>123</td>            <td>123</td>        </tr>        <tr>            <td>123</td>            <td>123</td>            <td>123</td>            <td>123</td>            <td>123</td>        </tr>    </table></body>

表格效果如下图1:

从代码中可以看出,使用行内式的方法给 table标签设置了 border 属性,值为1px, 除了围绕表格的边框,单元格也应用了该边框。

下面我改变 border 的属性值,看一下效果会如何变化,让 border="3px",其他值不变。

<table  bordercolor="red"  border="3px"  width="300px" height="100px">

如上效果图2, border 的值发生变化之后,表格的边框宽度变成3px,而单元格的边框仍然为1px。

经过查找资料,多次变换属性值亲自实践之后,得出一个结论:

  • border 属性规定围绕表格的边框的宽度,即外部大边框
  • border 属性会为每个单元格也应用边框,但是,如果border属性的值发生变化,那么就只有表格周围边框(外部大边框)宽度发生变化,单元格边框则仍为1px宽。这就意味着无论 border 属性值是几(0除外),单元格边框始终为1px。
  • border="0",表格边框和单元格边框均不显示。

二、疑问二:使用行内式给td添加样式 无效???

我将 border 属性添加给了 td 标签,其他不变

<table  bordercolor="blue"  width="300px" height="100px">        <tr >            <td border="1px" >123</td>            <td>123</td>            <td>123</td>            <td>123</td>            <td>123</td>        </tr>    <tr>            <td>123</td>            <td>123</td>            <td>123</td>            <td>123</td>            <td>123</td>        </tr>    </table>

实现效果如下图3 :

添加了 border属性的td并没有边框,,而table 中的的 bordercolor="blue" 反而实现了效果。

查资料整理后最后得出结论二:

  • table标签有border属性,而 td 和th 标签没有 border属性。
  • 不设置border属性的时候, 默认的border为3px,solid,#fff,(不同浏览器的默认宽度不一样)。在没有给 table 设置宽度的情况下,因为设置了边框颜色,所以边框显示了 。

三、使用style属性设置border 样式

只用css设置样式,样式如下:分别给table和td设置了border属性:

<style>        table{            border:1px solid red;/*给外边框设置1像素,红色,和td的颜色不同,便于查看*/            width:300px;            height: 100px;        }        td{            border:3px solid blue; /*给td 设置3像素的边框,颜色为蓝色*/        }    </style>

实现效果如下图4:很明显,在使用行内添加属性的方式得不到的效果,style属性可以帮我实现了。并且两者的效果都完美的变成了我设置的样式,互不干扰。

  • 上接一,如实想要单独设置td的样式可以使用style属性,例如:

    表格1

  • 在以后学习了更多的css属性之后,会尽量使用css来设置样式,只有你想不到的,没有css做不到的!

四、合并单元格

在日常工作学习当中,我们一般不会见到像 图1 一样的表格(有内外边框), 也很少见到像图3那样的表格,太丑了,而且达不到统计数据预期的效果。

我们经常见到的是单线的表格,像excel那样的效果。这个时候我会想到 table 的一个属性:cellspacing。

cellspacing 设置单元格与单元格边框之间的空白间距。

当把cellspacing="0",

    <table cellspacing="0"  cellpadding="0" border="1px"  width="300px" bordercolor="blue"          height="100px" >    <!-- cellpadding="0" 设置单元格内容与单元格之间的空隙 -->        <tr >            <td>表格2</td>            <td>123</td>            <td>123</td>            <td>123</td>            <td>123</td>        </tr>        <tr>            <td>123</td>            <td>123</td>            <td>123</td>            <td>123</td>            <td>123</td>        </tr>    </table>    <br>    <table  cellpadding="0" border="1px"  width="300px" bordercolor="blue" height="100px" >        <tr >            <td>表格1</td>            <td>123</td>            <td>123</td>            <td>123</td>            <td>123</td>        </tr>        <tr>            <td>123</td>            <td>123</td>            <td>123</td>            <td>123</td>            <td>123</td>        </tr>    </table>

请看效果图6(表格2):使用cellspacing="0"的表格成功的把边框合并了,但是仔细看,发现了吗,边框的宽度已经不是1像素,而是2像素了(与表格1对比很容易看出来)。

因为他实际是把 表格边框和单元格的边框紧紧挨到一起了(就相当于两个边框相加1px+1px=2px),而不是重叠,这样 视觉上 显示边框为2像素了。

注意:这个时候就需要强大的CSS,来合并单元格。

只需一个属性border-collapse即可实现(表格3)。

<table  cellpadding="0" border="1px"  width="300px" bordercolor="blue" height="100px" style="border-collapse: collapse;" >   /*表格3*/

表格3才是真正的合并细线表格(边框的合并),合并之后边框是1px。

图6:

五、心得

学习当中随着只是知识点的增多,有时候并不能立马完全理解透,会产生各种疑问,我经过思考,把疑问列出来,一点一点的查资料、问大神、自己实践,并把解答过程总结写出来,写总结的过程就是疑问解开的过程,而且加深了自己的理解。

原文地址:https://www.cnblogs.com/jaelynl/p/9393371.html

时间: 2024-09-29 00:33:42

由合并细线表格而产生的疑问与解答的相关文章

Css制作table细线表格

Css制作table细线表格 关键点: table {border-collapse:collapse; /* 关键属性:合并表格内外边框(其实表格边框有2px,外面1px,里面还有1px哦) */border:1px solid #999; /* 设置边框属性:样式(solid=实线).颜色(#999=灰) */}

如何使用CSS实现细线表格效果

如何使用CSS实现细线表格效果:建议:尽可能的手写代码,可以有效的提高学习效率和深度.虽然在使用布局的时候不提倡使用table,但是table并非是一个不能使用的元素,只要和CSS配合使用得当,还是具有相当的威力,并且在特地的情况使用table比使用div更有优势,例如在制作表格,但是表格自带的边框比较丑陋,下面介绍一下如何使用CSS实现细线表格效果.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="

CSS实现细线表格

做细线表格,用border-collapse:collapse;定义在table中,然后对td做border:1px solid #f00;边框样式定义即可. 例:<style type="text/css">table{width:600px;margin:0px auto;font:Georgia 11px;color:#333333;text-align:center;border-collapse:collapse;}table td{border:1px soli

合并指定表格指定列的相同文本的相邻单元格

//函数说明:合并指定表格(表格id为table_id)指定列(列数为table_colnum)的相同文本的相邻单元格 //参数说明:table_id 为需要进行合并单元格的表格的id.如在HTMl中指定表格 id="table1" ,此参数应为 #table1 //参数说明:table_colnum 为需要合并单元格的所在列.为数字,从最左边第一列为1开始算起. function table_rowspan(table_id, table_colnum) { table_firstt

使用border-collapse实现细线表格

使用border-collapse实现细线表格: 原生状态的表格边框是令人生厌的,所以对于表格边框的美化是一项重要的工作,下面通过代码实例介绍一下如何利用border-collapse属性实现细线表格效果. 代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://ww

HTML细线表格的实现

在网页制作中,我们常常会使用到表格,表格使得需要表达的信息更清楚,明了. <table border="1" cellspacing="0" bordercolor="#000000" width = "80%"> <tr> <th>姓名</th> <th>年龄</th> </tr> <tr> <td>111</t

使用vue自定义指令合并iview表格单元格

使用vue自定义指令合并iview表格单元格, 我们在开发过程中发现iview表格组件,官网只提供了合并表头的demo,并没有合并表格中的单元格. ivew表头分组:https://www.iviewui.com/components/table#BTFZ 效果图如下: 具体实现思路,通过vue自定义属性来操作dom,达到我们想要的效果: 代码如下: demo.vue  表格页面 <template> <div class="demo"><Table :c

习题2.5 两个有序链表序列的合并(15 分)&lt;有疑问?L1 L2 没办法变空&gt;

习题2.5 两个有序链表序列的合并(15 分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */ }; typedef PtrToNode L

JavaScript单线程的疑问与解答

问: JavaScript是单线程的,有任务队列,比如使用setTimeou(func,secs)来在secs毫秒后向任务队列添加func.但是,setTimeout后面跟一个死循环,那么死循环导致任务被阻塞,也就是说func不能执行. 我想请教一下:死循环在执行的时候,secs毫秒过去的时候,func是否被添加到任务队列中?如果添加了,但JS是单线程的,不是在这个线程中添加的,那在哪里被添加的?求大神解答下,找乐很多东西,都是和JavaScript高级程序设计上的说法一样. 答: 原因是 JS