有关何时使用 CSS 选择器以及何时使用唯一 ID 的信息,请参阅
可视化体验编辑器最佳实践和限制
。
AdobeTarget如何为元素生成选择器
section_D89D954BCBFB486CA081BE183776A475
Target 使用简单的算法来创建选择器。下面非常简略地介绍了生成逻辑:
<div class="wrapper">
<div id="container"> <!-- Selector is computed for this element -->
<ul class="navigation">
<li class="item active"> Home </li>
<li class="item"> Men </li>
<li class="item"> Women </li>
<li class="item"> Kids </li>
如果某个元素包含类属性,则 Target 会尝试使用该元素上存在的任何类的第一个类。
Target 会尝试解析该父元素,直到找到 <HTML>
元素或具有 ID 的元素。当某个元素包含 ID 且选择器是基于其下级子元素进行计算时,可以使用该元素的 ID 来创建选择器。
code language-html
<div class="wrapper">
<div id="container"> <!-- id is present here. It contributes to selector -->
<ul class="navigation">
<li class="item active"> Home </li> <!-- Selector is computed for this element -->
<li class="item"> Men </li>
<li class="item"> Women </li>
<li class="item"> Kids </li>
在此示例中:
选择器:#container
> ul.navigation:eq(0)
> li.item:eq(0)
(“>”表示直接子项。)
eq
告知索引存在一个具有“tagName=UL”的元素,且第一个类为 navigation
。因此,index
为 0。有关更多信息,请参阅 MDN 中的选择器文章。
如果元素不包含类,则 Target 会使用元素的 tagName
并向上遍历父元素,直到找到 <HTML>
元素或具有 ID 的元素。
code language-html
<div class="wrapper">
<div id="container"> <!-- id is present here. It contributes to selector -->
<ul class="navigation">
<li> Home </li>
<li> Men </li>
<li class="active"> Women </li>
<li> Kids </li><!-- Selector is computed for this element -->
您可以使用任何 CSS 选择器,前提是该选择器可唯一标识 DOM 中的元素。
上述方法即是 Target 使用的方法。Target 并不强制使用此方法。只要满足第 1 点中的要求,您便可以添加任何选择器。
您可以在选择器中使用任何属性。本文档仅以类名称为例。