草庐IT

html - 将 html 表格行跨度转换为 CSS

coder 2023-08-11 原文

我在这里查看了一些关于从 html 表到 css 的转换的帖子,但找不到我正在寻找的内容并希望得到一些帮助。

我正在使用表格作为一些不同尺寸储物柜的图形表示。因此,一些表格单元格跨越多行。当有几个静态模型时一切都很好。现在我必须处理动态配置,表格很麻烦,所以我正在尝试将其转换为 CSS。

当单元格跨越多行并且不确定如何设置 CSS 时,我遇到了一些问题。在尝试动态生成代码之前,我需要了解它是如何静态完成的。

这是一个简短的示例:

<table>
    <tr>
        <td id="Td7" rowspan="4" height="100">R0C0</td>
        <td id="Td8" height="25" >R0C1</td>
        <td id="Td9" height="25" >R0C2</td>
    </tr>
    <tr>
        <td id="Td10" height="25" >R1C1</td>
        <td id="Td11" height="25" >R1C2</td>
    </tr>
    <tr>
        <td id="Td12" height="25" >R2C1</td>
        <td id="Td13" height="25" >R2C2</td>
    </tr>
    <tr>
        <td id="Td14" height="25" >R3C1</td>
        <td id="Td15" height="25" >R3C2</td>
    </tr>
</table>

CSS(尝试),可以获取第一行但不确定如何进行其余操作:

<div>
    <span style="display:inline-block;width:100px;height:100px;border:solid 1px black;vertical-align:top;">R0C0</span>
    <span style="display:inline-block;width:100px;height:25px;border:solid 1px black;vertical-align:top;">R0C1</span>
    <span style="display:inline-block;width:100px;height:25px;border:solid 1px black;vertical-align:top;">R0C2</span>
</div>

还尝试使用 css“table”,使用其中一篇文章中的代码 here :

<style type="text/css">
    .css-table {
        display: table;
        background-color:#ccc;
        width: 350px;
    }
.css-table-tr { 
    display: table-row;     
}

.css-table-td_small { 
    display: table-cell;
    border:1px solid black;
    width: 100px;
    height:25px;
    display:inline-blok;
    text-align:center;
    vertical-align:top;
}

.css-table-td_medium { 
    display: table-cell;
    border:1px solid black;
    width: 100px;
    height:50px;
    display:inline-blok;
    text-align:center;
    vertical-align:top;
}

.css-table-td_large { 
    display: table-cell;
    border:1px solid black;
    width: 100px;
    height:100px;
    display:inline-blok;
    text-align:center;
    vertical-align:top;
}

.css-table-td_kiosk { 
    display: table-cell;
    border:1px solid black;
    width: 100px;
    height:150px;
    display:inline-blok;
    text-align:center;
    vertical-align:top;
}
</style>
<div class="css-table">
    <div class="css-table-tr">
        <span class="css-table-td_kiosk">R0C0</span>
        <span class="css-table-td_small">R0C1</span>
        <span class="css-table-td_small">R0C2</span>
    </div>
</div>

编辑:

这是我需要转换的(示例)表。储物柜的位置和大小将根据型号而变化。如果我能弄清楚一个模型使用 CSS 会是什么样子,我就可以让它动态化。括号中的 L、M 和 S 表示储物柜尺寸。中号是小号的 2 倍,大号是小号的 4 倍,Kiosk 是小号储物柜的 6 倍。

<table border="1" style="width:600px">
    <tr>
        <td id="Td1" height="100" >K01D04 (L)</td>
        <td id="Td2" height="100" >C02D08 (L)</td>
        <td id="Td3" height="100" >C03D08 (L)</td>
    </tr>
    <tr>
        <td id="Td4" height="25" >K01D03 (S)</td>
        <td id="Td5" height="25" >C02D07 (S)</td>
        <td id="Td6" height="25" >C03D07 (S)</td>
    </tr>
    <tr>
        <td id="Td7" rowspan="5" height="150" class="kPL_Kiosk">KIOSK</td>
        <td id="Td8" height="25" >C02D06 (S)</td>
        <td id="Td9" height="25" >C03D06(S)</td>
    </tr>
    <tr>
        <td id="Td10" height="25" >C02D05 (S)</td>
        <td id="Td11" height="25" >C03D05 (S)</td>
    </tr>
    <tr>
        <td id="Td12" height="25" >C02D04 (S)</td>
        <td id="Td13" height="25" >C03D04 (S)</td>
    </tr>
    <tr>
        <td id="Td14" height="25" >C02D03 (S)</td>
        <td id="Td15" height="25" >C03D03 (S)</td>
    </tr>
    <tr>
        <td id="Td16" height="50" >C02D02 (M)</td>
        <td id="Td17" height="50" >C03D02 (M)</td>
    </tr>
    <tr>
        <td id="Td18" height="50" >K01D02 (M)</td>
        <td id="Td19" rowspan="2" height="100" >C02D01 (L)</td>
        <td id="Td20" rowspan="2" height="100" >C03D01 (L)</td>
    </tr>
    <tr>
        <td id="Td21" height="50">K01D01 (M)</td>
    </tr>
</table>

谢谢。

编辑 2:

下图显示了我需要显示的内容(一种变体)。 L:大型储物柜,高度 100 px,M:中型,高度 50 px; S:小;高度 25 像素。但是,即使我指定了 flex-direction: column,我似乎也无法让储物柜按列显示。

编辑 3:

这是我正在使用的 CSS 和 HTML。一旦我将宽度和高度添加到 flex-direction,它就开始按列显示图像。我想这是一个未记录的要求。但是,现在所有内容都显示在列中。这是我的:

.lockers {
    display: flex;
    -webkit-flex-direction: row;
    flex-direction: row;
    -webkit-flex-wrap:wrap;
    flex-wrap:wrap;
    -webkit-justify-content: space-around;
    justify-content: space-around;
    align-items: flex-start;
}

.locker-column {
    display: flex;
    -webkit-flex-direction: column;
    flex-direction: column;
    -webkit-flex-wrap:wrap;
    flex-wrap:wrap;
    -webkit-align-items: flex-start;
    align-items: flex-start;
    height:420px;
    width:100px;
}
img {
    display: flex;
    max-width: 100px;
    height: auto;
    -webkit-flex-grow:1;
    flex-grow:1;
  }

<div class="lockers">
    <div class="locker-column">
        <img src="..\assets\images\Lockers\L.png" title="R1C1-L" />
        <img src="..\assets\images\Lockers\S.png" title="R2C1-S" />
        <img src="..\assets\images\Lockers\Kiosk.png" title="Kiosk" />
        <img src="..\assets\images\Lockers\M.png" title="R4C1-M" />
        <img src="..\assets\images\Lockers\M.png" title="R5C1-M" />
    </div>
    <div class="locker-column"> 
        <img src="..\assets\images\Lockers\L.png" title="R1C2-L" />
        <img src="..\assets\images\Lockers\S.png" title="R2C2-S" />
        <img src="..\assets\images\Lockers\S.png" title="R2C3-S" />
        <img src="..\assets\images\Lockers\S.png" title="R2C4-S" />
        <img src="..\assets\images\Lockers\S.png" title="R2C5-S" />
        <img src="..\assets\images\Lockers\S.png" title="R2C6-S" />
        <img src="..\assets\images\Lockers\M.png" title="R2C7-M" />
        <img src="..\assets\images\Lockers\L.png" title="R2C8-L" />
    </div>
    <div class="locker-column">
        <img src="..\assets\images\Lockers\L.png" title="R1C3-L" />
        <img src="..\assets\images\Lockers\S.png" title="R2C3-S" />
        <img src="..\assets\images\Lockers\S.png" title="R3C3-S" />
        <img src="..\assets\images\Lockers\S.png" title="R4C3-S" />
        <img src="..\assets\images\Lockers\S.png" title="R5C3-S" />
        <img src="..\assets\images\Lockers\S.png" title="R6C3-S" />
        <img src="..\assets\images\Lockers\M.png" title="R7C3-M" />
        <img src="..\assets\images\Lockers\L.png" title="R8C3-L" />
    </div>
</div>

编辑 4:

最佳答案

不要使用显示:表格。这是你要找的吗?

编辑:阐述

我认为你没有掌握这个概念..

我将尝试向您解释您应该如何考虑这个问题。通常对于表格,您会根据行来考虑,而 flex 盒可能就是这种情况,当我编写解决方案时,我是根据列来考虑的。

请注意我如何在储物柜的子项上设置 flex-direction: 列?这个 div 从字面上跨越了整个列,从上到下。您可以随心所欲,放任何大小的储物柜。

如果您完全没有使用 flexboxes 的经验,我建议您仔细阅读它,但下面的解决方案为您提供了您正在尝试做的事情的核心基础。

This tutorial是一个很好的起点。

.lockers {
  display: flex;
  justify-content: space-around;
  align-items: flex-start;
}

.locker-column {  
  display: flex;
  flex-direction: column;
  align-items: stretch;
  width: 100px;
}
.locker {  
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  text-decoration: underline;
  font-weight: 600;
  text-transform: uppercase;
  margin: 2px 0;
  height: 100%;
}

.large {
  background-color: yellow;
  color: red;
  height: 100px;
}

.small {
  background-color: navy;
  color: white;
  height: 25px;
}

.medium {
  background-color: green;
  color: red;
  height: 50px;  
}

.kiosk {
  color: red;
  text-decoration: none;
  text-transform: lowercase;
  height: 150px;
}
<div class="lockers">
  <div class="locker-column">
    <div class="large locker">L11</div>
    <div class="small locker">S21</div>
    <div class="kiosk locker">Kiosk</div>
    <div class="medium locker">M81</div>
    <div class="medium locker">M91</div>
  </div>
  <div class="locker-column">
    <div class="large locker">L12</div>
    <div class="small locker">S22</div>
    <div class="small locker">S32</div>
    <div class="small locker">S42</div>
    <div class="small locker">S52</div>
    <div class="small locker">S62</div>
    <div class="medium locker">M72</div>
    <div class="large locker">M82</div>
  </div>
  <div class="locker-column">
    <div class="large locker">L13</div>
    <div class="small locker">S23</div>
    <div class="small locker">S33</div>
    <div class="small locker">S43</div>
    <div class="small locker">S53</div>
    <div class="small locker">S63</div>
    <div class="medium locker">M73</div>
    <div class="large locker">M83</div>
  </div>
</div>

关于html - 将 html 表格行跨度转换为 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38512112/

有关html - 将 html 表格行跨度转换为 CSS的更多相关文章

  1. ruby-on-rails - 在 Rails 中将文件大小字符串转换为等效千字节 - 2

    我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,

  2. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  3. ruby - 将数组的内容转换为 int - 2

    我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]

  4. ruby - capybara field.has_css?匹配器 - 2

    我在MiniTest::Spec和Capybara中使用以下规范:find_field('Email').must_have_css('[autofocus]')检查名为“电子邮件”的字段是否具有autofocus属性。doc说如下:has_css?(path,options={})ChecksifagivenCSSselectorisonthepageorcurrentnode.据我了解,字段“Email”是一个节点,因此调用must_have_css绝对有效!我做错了什么? 最佳答案 通过JonasNicklas得到了答案:No

  5. ruby - 将散列转换为嵌套散列 - 2

    这道题是thisquestion的逆题.给定一个散列,每个键都有一个数组,例如{[:a,:b,:c]=>1,[:a,:b,:d]=>2,[:a,:e]=>3,[:f]=>4,}将其转换为嵌套哈希的最佳方法是什么{:a=>{:b=>{:c=>1,:d=>2},:e=>3,},:f=>4,} 最佳答案 这是一个迭代的解决方案,递归的解决方案留给读者作为练习:defconvert(h={})ret={}h.eachdo|k,v|node=retk[0..-2].each{|x|node[x]||={};node=node[x]}node[

  6. ruby-on-rails - Rails HTML 请求渲染 JSON - 2

    在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这

  7. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  8. ruby-on-rails - Ruby url 到 html 链接转换 - 2

    我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.

  9. ruby-on-rails - 使用 ruby​​ 将多个实例变量转换为散列的更好方法? - 2

    我收到格式为的回复#我需要将其转换为哈希值(针对活跃商家)。目前我正在遍历变量并执行此操作:response.instance_variables.eachdo|r|my_hash.merge!(r.to_s.delete("@").intern=>response.instance_eval(r.to_s.delete("@")))end这有效,它将生成{:first="charlie",:last=>"kelly"},但它似乎有点hacky和不稳定。有更好的方法吗?编辑:我刚刚意识到我可以使用instance_variable_get作为该等式的第二部分,但这仍然是主要问题。

  10. ruby-on-rails - capybara ::ElementNotFound:无法找到 xpath "/html" - 2

    我正在学习http://ruby.railstutorial.org/chapters/static-pages上的RubyonRails教程并遇到以下错误StaticPagesHomepageshouldhavethecontent'SampleApp'Failure/Error:page.shouldhave_content('SampleApp')Capybara::ElementNotFound:Unabletofindxpath"/html"#(eval):2:in`text'#./spec/requests/static_pages_spec.rb:7:in`(root)'

随机推荐