2013-07-30 182 views
0

我不能得到这个工作,貌似不可能的,这就是为什么我要问...点击“为”两个锚标记和标签输入标签上

这是所使用的CSS:

label.btn { 
    cursor:pointer; 
    display:inline-block; 
} 
label.btn>input[type=checkbox] { 
    display:none; 
} 
label.btn>input[type=checkbox]:checked~b { 
    background:red; 
} 
/* not relevant, just for testing purpose */ 
#divtest { 
    margin-top:1500px 
} 

下面的HTML代码将检查输入,然后应用样式<b>标签:

<a href="#divtest" id="anchor"> 
    <label class="btn"> 
     <input type="checkbox"/><b>Click should scroll to '#divetest' element and check input for styling!</b> 
    </label> 
</a> 

DEMO styling

如果我添加“的”属性标签的目标定位标记,默认浏览器滚动的作品,但随后施加不定型:

<label class="btn" for="anchor"> 

DEMO anchor

现在,一个显而易见的问题:

我可以得到这两种行为在纯CSS中一起工作吗?

+0

你对输入类型的期望是什么:复选框INSIDE锚点。在锚点上,浏览器将滚动到#divtest,在标签上,浏览器将焦点设置为“输入”,然后单击“输入”将会像点击最外面的锚点。 –

回答

2

a中的input元素违反常识以及HTML5 CR。嵌套两个互动元素引发了点击鼠标时激活元素的问题。

而不是这样的构造,使用有效和合理的HTML标记。然后请根据期望或期望的渲染与实际渲染来制定样式问题,而不是说“this”“不起作用”。

+0

这是非常有效的信息,thx。我不想在我的问题上太模糊,对此抱歉。 –

2

由于Input:复选框位于<label>的内部,所以这不起作用。浏览器只需点击标签即可将注意力集中在输入上。

+0

这就是我所看到并认为的,不可能的!如果有的话,我正在寻找一个有特殊技巧的古茹忍者......无论如何,thx为你的答案。 –

+1

有一个窍门:不要把复选框放在标签内。 – GolezTrol

+0

@GolezTrol然后你将如何使用':checked'伪类来应用样式?我已经尝试使用':active',但这不是我期待的行为。如果事实我的例子是非常错误的,我应该使用单选按钮发布它,而不是复选框,因为我想要风格持久。希望你明白我的意思?! –