您将如何做到这一点:表格还是 CSS? [关闭]

2024-03-16

Puzzle Grinch
(source: sontag.ca http://sontag.ca/gif/grinch.gif)

Part I

这种布局可以非常简单地使用 2 个 HTML 表格(一个嵌套在另一个表格中)甚至使用单个表格来完成。

也可以使用 CSS 来完成,尽管它可能涉及多一点思考.

这可能不是现实世界的布局,但我见过类似的页面。将此视为一个谜语;提高 CSS 技能的练习。

为了让事情变得更有趣,我在一个由两部分组成的小网页中提出了这个问题,名为挑战 https://web.archive.org/web/20121128141851/http://sontag.ca:80/TheChallenge/。我们将检查代码和问题:使用表格或 CSS 进行布局?我们的两个对手并肩作战,为代码霸权而战。

第一部分阐述了如何挑战 https://web.archive.org/web/20121128141851/http://sontag.ca:80/TheChallenge/成为了。我希望你喜欢。

第二部分是决定 https://web.archive.org/web/20090330024144/http://sontag.ca:80/TheChallenge/CSS%20versus%20Tables.html. 你可能会感到惊讶.


Part II

我很惊讶真正好的答案竟然这么快就出现了minutes我发帖后。这是一次令人羞愧的经历。我不想和你一起参加计时赛。

但是,话虽这么说,在仔细检查所提供的解决方案后,我发现 意识到没有一个 CSS 解决方案(包括当时我自己的)能够像所提供的任何一个表格解决方案一样有效。挑战在于 CSS 比表格更好any布局解决方案。

所以我添加了3条新规则(记住,其中一条规则是可以更改的)。这惹恼了一些人。然后我添加了一些关于规则更改原因的丰富多彩的解释。我认为这让他们更加恼火。

  1. 我们的花园周围要有栅栏;一些东西可以让它与它所处的任何沉闷的环境区分开来;而且不太贵,但易于保持清洁。 所以我想要花园周围有一个 1 像素的黑色边框
  2. 每个花园地块的居民(角色)必须是黑色或白色,这取决于他们在花园中表现得最好的。而且它们都是草书血统。其中没有斜体。 ;-)
  3. 花园是可重定位的,也就是说,我可以在页面的任何地方拥有这个花园(没有绝对定位)。

这就是最终输出的样子(背景颜色可选):

alt text
(source: sontag.ca http://sontag.ca/gif/garden.gif)

我对反复无常和最后一刻规则的改变表示歉意。我错了。每个花园的居民都是工匠,手工制作的专家。他们是草书家族,并将他们的风格感归功于italics.

花园必须可重新定位,因为两种花园(桌子和 CSS)都需要coexist在同一页上。我这样说可能是错的position:absolute规则是不允许的。如果你能让他们在这种环境下工作,那么你就会拥有更多的力量。他们肯定会被接受。

我要求在地块周围设置围栏,因为每种花园类型都将种植在橙色背景的乡村,与我们种植的一些花朵的颜色非常相似。

我现在住在荷兰,郁金香季节即将来临。如果您在接下来的几周内飞越荷兰,并且天气晴朗(这里很少见),您下面的风景将看起来与这个愚蠢的练习非常相似。

我并不热衷于橙色,但我确实喜欢并钦佩荷兰人,所以这就是为什么我们有橙色背景,这是对我的东道国的致敬。 :-)


Part III

我已经发布了特德的表答案 https://stackoverflow.com/questions/636712/how-would-you-do-this-tables-or-css/645292#645292来自下面的挑战以及这张图片

alt text
(source: sontag.ca http://sontag.ca/gif/garden2.gif)

因为可以轻松地将居住者添加到花园地块中,而无需触及 CSS 规则 - 一切都会自动居中。

你能用以下方法做到这一点吗 CSS? 你能用……鲱鱼砍倒森林里最强大的树吗?


Update:查理的答案就在这里。


Update: 最终编辑。切换到 STRICT DTD,删除斜体以匹配问题中的图像,并恢复 id 的全彩名称以根据问题上的 OP 评论显示意图,并将 css 中 id 名称的主列按照它们出现的顺序进行排序在 HTML 中。

我还选择不重复使用外部 div 作为白色 7 方块(它没有自己的 div之前的编辑 https://stackoverflow.com/revisions/viewmarkup/850725),因为如果你想使用布局,它就不太实用,并且感觉有点像作弊(尽管从简洁/像素完美的角度来看,我喜欢它的厚颜无耻)。

在这里查看:http://jsbin.com/efidi http://jsbin.com/efidi
在这里编辑:http://jsbin.com/efidi/edit http://jsbin.com/efidi/edit

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><title>The Challenge</title>
<style type="text/css">
div     { text-align: center; width:175px; height:175px; line-height: 35px;}
div div {         float:left; width: 35px; height: 35px;}
#orange, #maroon,
#blue  , #green  {float:right;}

#orange, #silver {background-color:silver;  width:140px;}
#navy  , #maroon {background-color:maroon; height:140px; line-height:140px;}
         #navy   {background-color:navy  ;}
#green , #red    {background-color:red   ;  width: 70px;}
#yellow, #blue   {background-color:blue  ; height: 70px; line-height: 70px;}
         #yellow {background-color:yellow;}
         #white  {background-color:white ;}
         #green  {background-color:green ;}
         #orange {background-color:orange;}
</style> 
</head> 
<body> 
  <div> 
    <div id="silver">1</div> 
    <div id="maroon">2</div> 
    <div id="navy"  >3</div> 
    <div id="red"   >4</div> 
    <div id="blue"  >5</div> 
    <div id="yellow">6</div> 
    <div id="white" >7</div>
    <div id="green" >8</div> 
    <div id="orange">9</div> 
  </div>
</body></html>

旁白:如果可以的话,我也许会多放一点空白,但这是在 SO 上的代码块开始获得滚动条之前的限制,我选择将其全部显示在屏幕上。

注:我借用了line-height修复自Tyson https://stackoverflow.com/questions/636712/how-would-you-do-this-with-css/636780#636780(谁是第一个得到正确渲染答案的人)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您将如何做到这一点:表格还是 CSS? [关闭] 的相关文章

  • 使用最后一个子选择器减少 CSS

    我在用less并试图得到last输入有一个边距底部 of 10px 这是我所拥有的 但它不起作用 并且没有在最后一个输入上应用 margin bottom 有什么想法吗 input margin bottom 0px last child
  • 为什么我的 CSS 属性被覆盖/忽略?

    我对 CSS 层次结构 有一些问题 不确定将其称为层次结构是否正确 我正在尝试设置以下 HTML 的样式 section section
  • 如何使用 CSS 或 jQuery 设置第一个和最后一个 li 的样式?

    我如何设计第一个 顶级 li和最后一个 顶层 li使用 CSS 还是 jQuery 我正在使用 CSS 设置第一个li但它也是造型第一li在每个中学阶段ul 那么我怎样才能让它只设置样式li其中包含 Main 1 最后一个包含 Main 6
  • 如何使用CSS缩放图像以填充div并保持纵横比?

    我想用一个 div 填充img 保持纵横比并根据需要拉伸宽度或高度以适应 div style width 80px height 80px img src div 我怎样才能实现它 如果图像不是二次方的 则必须将其 放大 并根据哪一侧较大而
  • Firefox 忽略 CSS 中的最小高度

    由于某些原因 最小高度在 Firefox 上不起作用 我尝试在 body 上设置 min height 但 Firefox 完全忽略了它 由于我的页面是动态的 我不能只将高度设置为 100 我应该怎么办 body border 1px so
  • Angular SlickGrid 对齐标题文本

    我正在使用角度SlickGrid并希望将列标题中的文本居中或右对齐 并非所有列都以相同的方式 我发现 有一个headerCssClass列定义中的属性 但我一直尝试 这种样式似乎从未被应用 对于列定义 id sourceNumber nam
  • Twitter Typeahead 上使用 Bootstrap 3 的 CSS 问题

    随着 Bootstrap 3 的发布 Typeahead 已被删除 取而代之的是 https github com twitter typeahead js https github com twitter typeahead js 我已经
  • 使用 float:left 与 display:inline-block 的 jQuery UI 拖放排序比较

    我这里有两个例子 这两个例子之间的唯一区别是 一种使用display inline block 另一种使用float left li doc item 显示 内联块 与 li doc item float left 我的问题是 displa
  • 如何在 XHTML 中标记学名?

    我想知道在 XHTML 中标记科学名称的最佳方法 这个答案 https stackoverflow com questions 63752 when is the best time to use b and i in lieu of st
  • 如何从 CSS 选择器中提取类名?

    故事 我目前正在构建一个 ESLint 规则 以警告在 CSS 选择器定位器中使用引导布局导向和角度技术类 目前我在字符串方法中使用简单的子字符串 for var i 0 i lt prohibitedClasses length i if
  • 我应该创建一个块还是一个元素 BEM CSS?

    Bem官网说 创建一个块如果一段代码可以被重用并且它不依赖于正在实现的其他页面组件 创建一个元素如果一段代码在没有父实体 块 的情况下无法单独使用 我有一个 关于部分 块 它的元素依赖于父级并且不能在网站中重复使用 如何根据 bem 这段代
  • Flexbox 项目的完美圆形边框半径[重复]

    这个问题在这里已经有答案了 我有类似这样的项目 它们是弹性盒容器内的弹性项目 我的正常尺寸物品 我的物品被挤压 我的 CSS 看起来像这样 body display flex flex direction column align item
  • 使用css动画使div元素移动到页面的每个角落

    我想知道如何使用CSS动画使圆形div元素移动到页面的每个角落 我曾尝试这样做 但没有成功 这是一个相当基本的问题 但它会帮助我理解
  • 有什么方法可以声明盒子的大小/部分边框吗?

    有什么方法可以在 CSS 中声明框的大小 部分边框吗 例如一个盒子350px只显示第一个边框底部60px 我认为这可能非常有用 例子 并不真地 但以优雅降级且不需要多余标记的方式实现这种效果非常容易 div width 350px heig
  • 如何向 div 添加“闪耀”叠加层?

    如何添加如下图所示的漂亮叠加层 考虑以下 HTML 我将如何添加这样的覆盖层 我知道我可以在它上面使用渐变 并对角应用它 但我也可以弯曲它吗 div class photostrip div class overlay div img sr
  • 我不明白 flex-grow 属性吗?

    恐怕我一定不明白flex grow 如果你跳到下面的 JSFiddle 按照我的理解 big应该是另一个大小的三倍 flex item 正如你所看到的 事实并非如此 为什么 http jsfiddle net nrur6mmo http j
  • 表格底部的粘性滚动条

    我不确定 粘性 是否是这个术语 但是有没有办法使滚动条overflow auto保持可见 我有一个相当大的表格 我希望它可以水平滚动 但是 表格也相当高 因此当页面加载时 水平滚动条不在浏览器的视口内 因此很难判断表格是否可滚动 div s
  • 在 Safari 中提交表单后无法对 DOM 进行样式更改

    在 Safari 中提交表单后 我在对 DOM 进行样式更改时遇到问题 有谁知道它是否可能 这是 Safari 预期的浏览器行为吗 我设置了一个非常简单的示例 以便您可以看到实际问题 http jamesmichaelking com st
  • WebView 未绘制,WARN/webcore(5336):第一次布局后无法获取 viewWidth

    我的应用程序有一个视图 可以使用以下代码以编程方式添加到活动中 RelativeLayout LayoutParams layoutParams new RelativeLayout LayoutParams 480 75 Relative
  • 在选择 tr 来覆盖父 div 上的第 n 个子类时,如何使用 jquery addClass ?

    我用它来选择一个 tr 当单击它来更改 tr 的颜色时 tr click function this addClass selected siblings removeClass selected 参见小提琴http jsfiddle ne

随机推荐