2010-10-21 140 views
1

我试图在文本框旁边放置一个向下的箭头。将元素放在另一个旁边?

jsFiddle example

我怎样才能让箱子紧贴地配合与输入,使得它们的顶部和底部对齐?

必须是获取位置信息的方法是JS/jQuery然后...什么,我应该绝对定位它?


编辑:明白了pretty darn close我怎么想。它在IE8中仍然有点...无论如何,我可以推动它?

+0

FYI:谷歌的主页在搜索按钮旁边的文本字段的方式是你想要的。 – akonsu 2010-10-21 02:15:23

+0

@akonsu,而不是我的谷歌 – mikerobi 2010-10-21 02:16:29

+0

如果您在搜索框中键入内容,它会显示结果列表,而列表顶部是带有按钮的文本字段。 – akonsu 2010-10-21 02:21:23

回答

1

这绝对不是应该要求JavaScript的东西。

我的第一个建议是尝试使用buttoninput[type=button]元素,而不是跨度,我总是有更好的运气排列与假的真实按钮的文本框。

这是我看到的时候我的元素转换为按钮:

alt text

它不是一个完美的解决方案,但也有一些小的调整,以按钮和文本框的样式,你应该能够使这行得通。请注意,不同的浏览器使用不同的默认样式来呈现表单小部件,因此很难提供一个通用的解决方案,请注意文本框边框的差异。

所不同的是在你原来的例子更富戏剧性:

alt text

你一定会想自定义样式应用到文本框,以获得一致的和可预见的结果。

+0

不,它不需要* JS,但我想使用JS,因为我正在动态添加箭头。逐步增强。对我来说仍然不够好:\希望我能更接近它。 – mpen 2010-10-21 03:17:59

+1

@Mark,渐进增强并不意味着您必须在布局中完成所有样式。事实上,我会说这是最常见的做法。即使渐进式增强,一个理智的开发人员不会使用CSS的唯一时间就是他们使用绝对定位或补偿浏览器不兼容问题。 – mikerobi 2010-10-21 03:27:07

+0

我想我不会控制文本框的样式,因此我必须使用JS来匹配至少*某些样式,例如框的高度。事后看来,大多数插件都会让你自定义CSS,使其变得非常漂亮。你是对的。 – mpen 2010-10-21 04:04:59

1
.cb-arrow { 
    cursor: pointer; 
    background: -moz-linear-gradient(center top, 
     rgb(242, 242, 242) 0%, 
     rgb(221, 221, 221) 50%, 
     rgb(207, 207, 207) 100%) 
     repeat scroll 0% 0% transparent; 
    border: 1px solid #707070; 
    -moz-border-radius-topright: 3px; 
    -moz-border-radius-bottomright: 3px; 
    padding: 0 3px; 
    margin-left:-5px 
} 


.combobox { border:1px solid #BBB; padding:2px 2px 1px 2px; margin:0 } 

不是最漂亮的解决方案,但将工作。

//编辑:版本二

废料的JavaScript(现在)。添加一个容器。看起来一切都很好,在一致的FF和Chrome:

HTML:

<div id='container'> 
    <input type="text" class="combobox" /> 
    <button type='button' class='cb-arrow'>&#9660;</button> 
</div> 

CSS:

#container { height:20px;line-height:20px } 

.cb-arrow { 
    border: 1px solid #707070; 
    background:white; 
    margin:0; 
    padding:0; 
    margin-left:-5px; 
    vertical-align:middle; 
} 

.combobox { 
    border:1px solid gray; 
    border-right:0; 
    vertical-align:middle; 
    padding:1px 
} 
+0

在FF和IE中看起来不错,但不是Chrome :( – mpen 2010-10-21 03:19:55

+0

给V2一个尝试:) – Ben 2010-10-21 03:58:54

+0

另外,在translate.google.com上,Google的人也尝试过同样的事情...... – Ben 2010-10-21 04:01:18

0

似乎在IE和FF工作。我没有铬。


<style> 
#container * 
{ 
    border: 1px solid black; 
    float:left; 
    margin:0; 
    padding:0; 
} 
#container .cb-arrow 
{ 
    height:22px; 
    line-height:22px; 
    width:20px; 
} 
#container .combobox 
{ 
    border-right:0px; 
    height:20px; 
    line-height:20px; 
} 
</style> 
<div id='container'> 
    <input type="text" class="combobox" /> 
    <button type='button' class='cb-arrow'>&#9660;</button> 
</div> 
相关问题