【问题标题】:Have multiple divs next to each other有多个相邻的 div
【发布时间】:2015-02-16 18:44:20
【问题描述】:

基本上,我想制作一个“色谱”,其中我有多个彼此相邻的单独彩色 div,每个都有指向不同站点的链接。到目前为止,我有这个:

<div style="width:100px;height:500px;background-color:#FF0000"; onclick="location.href='http://www.google.com';" style="cursor: pointer;"</div>

Google 只是一个参考网址,我还没有确切的网址。

总之,重点。

我查看了 SO 上的几个线程,但未能找到一种方法将其中 6 个 div 彼此相邻放置以形成彩虹般的颜色。我尝试过的所有东西都将它们放在前面的下面。我知道如果它只有 6 种颜色,那将是一个蹩脚的色谱,但没关系。

虽然,如果有一种方法可以将 div 混合在一起(同时仍保留它们的“hitbox”以被转发到链接),以便给它更多“彩虹”的感觉,那将是非常也很有帮助。但让它们井井有条更重要。暂时。

感谢您的帮助!

【问题讨论】:

    标签: html each next


    【解决方案1】:

    有两种明显的方法可以实现这一点(无需编写脚本)。 Live examples here

    1. 彩色链接元素:在每个&lt;a href=""&gt;&lt;/a&gt; 上使用单独的颜色以获得可以点击的块状色谱,从而导致不同的页面。

      • 优点:易于编码;用户看到定义的可点击边界。
      • 缺点:背景不是很可定制,除非为每个链接设置不同的样式,这可能不是很平滑(尤其是渐变)
      • 结果:

    2. 隐藏链接元素:使用背景元素并叠加&lt;a href=""&gt;&lt;/a&gt;标签,让你拥有任何你想要的背景。

      • 优点:可自定义背景
      • 缺点:如果使用渐变,兼容性很困难;您管理自己的间距,用户看不到定义的可点击边界。
      • 结果:

    【讨论】:

      【解决方案2】:

      使用 float:left;display:inline-block; 将它们显示在 1 行中,只需确保父容器没有折叠并且足够宽。

      您可以使用渐变作为背景颜色将它们混合在一起。

      http://www.colorzilla.com/gradient-editor/

      懒惰的例子:http://codepen.io/anon/pen/XJZQzq

      【讨论】:

        【解决方案3】:

        这里是每个部分的颜色不同的示例。我使用锚标记而不是 div,因为它们是指向其他站点的链接。这是比使用内联 javascript 更好的做法。 http://jsfiddle.net/78x6ub2k/

        我的 html 看起来像:

        <a href="http://google.com" id="color1" class="color">
        </a>
        <a href="http://google.com" id="color2" class="color">
        </a>
        <a href="http://google.com" id="color3" class="color">
        </a>
        <a href="http://google.com" id="color4" class="color">
        </a>
        <a href="http://google.com" id="color5" class="color">
        </a>
        <a href="http://google.com" id="color6" class="color">
        </a>
        

        我的 CSS 看起来像:

        .color {
            display:inline-block;
            height: 500px;
            width: 100px;
        }
        #color1{
            background: #ff0000;
        }
        #color2{
            background: #ff9000;
        }
        #color3{
            background: #faff00;
        }
        #color4{
            background: #0cff00;
        }
        #color5{
            background: #0019ff;
        }
        #color6{
            background: #7700ff;
        }
        

        这是一个颜色一起褪色的示例。我在链接周围添加了一个 div 并给它一个 css 渐变 (http://www.colorzilla.com/gradient-editor/) http://jsfiddle.net/6n4pg254/

        我的 html 看起来像:

        <div class="colors">
            <a href="http://google.com" id="color1" class="color">
            </a>
            <a href="http://google.com" id="color2" class="color">
            </a>
            <a href="http://google.com" id="color3" class="color">
            </a>
            <a href="http://google.com" id="color4" class="color">
            </a>
            <a href="http://google.com" id="color5" class="color">
            </a>
            <a href="http://google.com" id="color6" class="color">
            </a>
        </div>
        

        我的 CSS 看起来像:

        .color {
            display:inline-block;
            height: 500px;
            width: 100px;
            border: 1px solid #ffffff;
        }
        .colors {
            width:632px;
            background: #ff3232; /* Old browsers */
        background: -moz-linear-gradient(left, #ff3232 14%, #d87b29 17%, #d87b29 31%, #ede62d 34%, #ede62d 48%, #2ae030 52%, #2ae030 65%, #2e48f4 68%, #2e48f4 83%, #921c96 86%); /* FF3.6+ */
        background: -webkit-gradient(linear, left top, right top, color-stop(14%,#ff3232), color-stop(17%,#d87b29), color-stop(31%,#d87b29), color-stop(34%,#ede62d), color-stop(48%,#ede62d), color-stop(52%,#2ae030), color-stop(65%,#2ae030), color-stop(68%,#2e48f4), color-stop(83%,#2e48f4), color-stop(86%,#921c96)); /* Chrome,Safari4+ */
        background: -webkit-linear-gradient(left, #ff3232 14%,#d87b29 17%,#d87b29 31%,#ede62d 34%,#ede62d 48%,#2ae030 52%,#2ae030 65%,#2e48f4 68%,#2e48f4 83%,#921c96 86%); /* Chrome10+,Safari5.1+ */
        background: -o-linear-gradient(left, #ff3232 14%,#d87b29 17%,#d87b29 31%,#ede62d 34%,#ede62d 48%,#2ae030 52%,#2ae030 65%,#2e48f4 68%,#2e48f4 83%,#921c96 86%); /* Opera 11.10+ */
        background: -ms-linear-gradient(left, #ff3232 14%,#d87b29 17%,#d87b29 31%,#ede62d 34%,#ede62d 48%,#2ae030 52%,#2ae030 65%,#2e48f4 68%,#2e48f4 83%,#921c96 86%); /* IE10+ */
        background: linear-gradient(to right, #ff3232 14%,#d87b29 17%,#d87b29 31%,#ede62d 34%,#ede62d 48%,#2ae030 52%,#2ae030 65%,#2e48f4 68%,#2e48f4 83%,#921c96 86%); /* W3C */
        filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff3232', endColorstr='#921c96',GradientType=1 ); /* IE6-9 */
        }
        

        在任何一种情况下,我都使用属性“display:inline-block”来使元素显示为内联,从而保留大小和其他类似块的特性。你也可以使用 "display:block" 和 "float:left" 让所有项目都向左浮动。虽然如果您不熟悉浮点数的工作原理,这可能会导致一些奇怪的行为。

        【讨论】:

        • 所以我试用了您的第二个版本,将它们混合在一起,看起来很棒!唯一的事情是我无法让它显示在 Weebly 网站上。我尝试将 CSS 粘贴到它自己部分下方底部的网站 CSS 中,但是当我将 html 放入“嵌入代码”工具时,它只是显示为空白。我不知道你是否熟悉 Weebly,但有没有办法可以将 CSS 放入 html 代码本身,并将所有内容都作为一个代码?
        • 等等,没关系。我只是意识到我忘了关闭标题,所以它认为整个 CSS 都是一个标题。嘿嘿……还有一件事。你能让渐变更剧烈一点吗?我只是想让它看起来更好一点。
        • 对不起这么多cmets。是否还有一种简单的方法可以将鼠标悬停文本添加到每种颜色?感谢您的帮助!
        • 这里是一个例子:jsfiddle.net/71gun45r。您可以在链接内添加一个跨度,然后使用 :hover 伪选择器来更改悬停时跨度的不透明度。
        【解决方案4】:

        更新:查看@pankijs 发布的内容后简化了我的回答 - 谢谢!

        您可以使用渐变背景,请看一下这个示例(我只使用了 4 个块,但您可以理解):

        http://jsfiddle.net/r3bk65ys/3/

        HTML

        <div class="main">
            <div><a href="#" class="rainbow one"></a></div>
            <div><a href="#" class="rainbow two"></a></div>
            <div><a href="#" class="rainbow three"></a></div>
            <div><a href="#" class="rainbow four"></a></div>
        </div>
        

        CSS

        .main div {
            float: left;
        }
        
        .main .rainbow {
            display: inline-block;
            height: 50px;
            width: 100px;
        }
        
        .one {
            background: -webkit-linear-gradient(left, red, orange);
            background: -o-linear-gradient(right, red, orange); 
            background: -moz-linear-gradient(right, red, orange); 
            background: linear-gradient(to right, red , orange); 
        }
        .two {
            background: -webkit-linear-gradient(left, orange, yellow);
            background: -o-linear-gradient(right, orange, yellow); 
            background: -moz-linear-gradient(right, orange, yellow); 
            background: linear-gradient(to right, orange, yellow); 
        }
        .three {
            background: -webkit-linear-gradient(left, yellow, green);
            background: -o-linear-gradient(right, yellow, green); 
            background: -moz-linear-gradient(right, yellow, green); 
            background: linear-gradient(to right, yellow, green); 
        }
        .four {
            background: -webkit-linear-gradient(left, green, blue);
            background: -o-linear-gradient(right, green, blue); 
            background: -moz-linear-gradient(right, green, blue); 
            background: linear-gradient(to right, green, blue); 
        }
        

        但无论如何,有多种方法可以实现相同的结果,有些可能更适合您的环境/所选的 JavaScript 库 - 为您的问题添加更多细节可能会有所帮助。

        参考资料:

        【讨论】:

          【解决方案5】:

          只需使用display:inline-block 将 div 放在同一行。

          <div style="width:100px;height:500px;background-color:#FF0000;display:inline-block"; onclick="location.href='http://www.google.com';" style="cursor: pointer;"</div>
          

          您可能需要调整宽度以使 div 适合一行。 您可以使用% 宽度以获得最佳拟合。

          在 7 色彩虹中: 100 / 7 = ~14.3。所以只需将每个 div 设置为 width:14.3%

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-08-30
            • 1970-01-01
            • 2019-07-20
            • 1970-01-01
            相关资源
            最近更新 更多