【问题标题】:CSS Aligning contact form columnsCSS 对齐联系表单列
【发布时间】:2015-07-21 13:50:24
【问题描述】:

总体上还是 CSS 新手,我尝试将第二个联系表单列与第一个(地图)对齐。

我尝试将第一列浮动到左侧,将第二列浮动到右侧,但是第二列不会与第一列并排排列。

在第二列(联系表单)上使用 position: absolute 有效,但它没有响应,所以我正在寻找另一种方法来做到这一点,所以它是响应式的。

如何将联系表单与地图对齐并使其仍然具有响应性?

JSFiddle:https://jsfiddle.net/x6zyffx4/

例子:

CSS:

Contact form:

.page-node-28 section.block-system {
float: right;
width: 40%;

/*position: absolute;*/
/*right: 100px;*/
/*top: 110px;*/
/*float:right;*/
/*width: 40%;*/
}


Google maps:

.page-node-28 .block-google-maps {
width: 40%;
min-height: 500px;
float:left;
}

HTML:

Column1(地图)

<section id="block-block-2" class="block block-block">
<div class="contextual-links-wrapper">
<ul class="contextual-links">
    <li class="block-configure first last">
        <a href="...">Configure block</a>
    </li>
</ul>
</div>
<div class="block-google-maps">
    <iframe src="https://www.google.com/maps/...">
    </iframe>
</div> 
</section> <!-- /.block -->

第 2 栏(联系表格)

<section id="block-system-main" class="block block-system clearfix">
<div id="node-28" class="node node-webform">
    <div class="submitted">
    <div class="content">
        <form class="webform-client-form" method="post">
            ...
        </form>
</section>
<!-- /.block -->

更新:

【问题讨论】:

  • 不能使用包含列和行的表格?你应该可以用 HTML 来做。

标签: html css contact-form


【解决方案1】:

这是我将使用的 css,然后是用于响应的媒体查询

.block-google-maps {
 width: 45%;
 float: left;
 }

.webform-client-form {
 width: 45%;
 float: left;
 }

http://codepen.io/algib/pen/qdMZaz

【讨论】:

  • 这只是将它移到地图下的左侧,请参阅问题中的更新图像。
  • 我没有检查 codepen,但是 HTML 的编写方式,默认情况下第 n 部分 div display: block; 所以如果你在 css 中添加 display: inline-block; 作为答案,你可以实现它,定义只是浮动和宽度不会有任何好处
  • 刚刚尝试过 - 将display: inline-block; 添加到两者中,并尝试将其添加到联系表单块中,但它仍然没有将联系表单移动到与地图对齐的右侧。它仍然停留在地图块下。
  • @peter_jackson 看看这个小提琴 - 你的代码很乱,我清理了一下jsfiddle.net/e2jsa11t/1
  • @RachelGallen 嗯,它是从 Drupal 复制和粘贴的。尝试您的更改得到相同的结果,它在地图下对齐,就像我的问题中的更新示例一样。
【解决方案2】:

我在 jsfiddle 上的 CSS 中添加了以下规则:

/* I added the following three rules to your css on the jsfiddle */
.myContainerDiv {
    position: relative;
    vertical-align: top;
    width: 950px;
}
.myContainerMapDiv {
    position: relative;
    width: 450px;
    margin-right: 25px;
    float: left;
    overflow: hidden;
}
.myContainerFormDiv {
    position: relative;
    width: 400px;
    float: left;
    overflow: hidden;
}
/* I added the above rules */

接下来,我将您的代码分解为一个包含 div(又名 myContainerDiv)和两个子 div,分别命名为:包含 google 地图内容的 myContainerMapDiv 和包含表单元素内容的 myContainerFormDiv。

我添加的 css 将两个子 div 推到了左侧。 然后,父级设置垂直对齐方式,以便它们都具有相对于父级顶部的定位。

最后,我还在我的 css 中添加了剪裁,以显示其他一些元素包含的大小值会影响您获得成功结果的能力。例如,地图的 iframe 的宽度为 600 像素,您无法摆脱,而 textarea 也会根据我给这些 div 的宽度进行裁剪。

希望能有所启发!

【讨论】:

    【解决方案3】:

    这不是 100% 准确的,但会让您清楚地知道如何实现它

    HTML

    <section id="block-block-2" class="block block-block">
    <div class="contextual-links-wrapper">
    <ul class="contextual-links">
        <li class="block-configure first last">
            <a href="...">Configure block</a>
        </li>
    </ul>
    </div>
    <div class="block-google-maps">
        <iframe src="https://www.google.com/maps/...">
        </iframe>
    </div> 
    </section> <!-- /.block -->
    
    <section id="block-system-main" class="block block-system clearfix">
    <div id="node-28" class="node node-webform">
        <div class="submitted">
        <div class="content">
            <form class="webform-client-form" method="post">
                ...
            </form>
    </section>
    <!-- /.block -->
    

    CSS

    #block-block-4 {
        width: 100%;
    }
    
    .block-google-maps {
        float:left;
        width: 45%;
        position: relative;
        display: inline-block;
    }
    .block-google-maps iframe {
        width: 400px;
    
    }
    .node-webform{
        float:left;
        width: 50%;
        position: relative;
        display: inline-block;
    }
    

    Updated Fiddle

    就响应而言,您必须使用媒体查询。

    【讨论】:

    • 这只是将联系表格与地图下方的左侧对齐。我已经发布了一个小提琴:jsfiddle.net/x6zyffx4 我试图让它们并排(左侧的地图和右侧的表格相互对齐)
    • 好的,又累了,它仍然把它放在地图块下,如问题中的“更新”示例所示。
    • 更新小提琴jsfiddle.net/x6zyffx4/21,我没有更改HTML,但你必须调整css类,就像我使用的更新小提琴.block-google-maps但在你原来的小提琴.page-node-28 .block-google-maps我没有页面节点-28 在 HTML 中定义,所以不能在小提琴中使用它
    • 在不使用page-node-28等的情况下尝试了您最新的同名代码,并且联系表格仍然像更新图片中那样堆叠在地图块下。我猜 Drupal 7 代码覆盖了更改?我能够定位它的唯一方法是使用position: absolute
    • 它在我的本地机器上。只是不明白为什么它不工作,但使用 postiion:absolute 工作和 right: 100px
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多