2010-10-21 173 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> 
相關問題