Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用HTML/CSS/JavaScript垂直对齐一个项目上的列表?_Javascript_Html_Css - Fatal编程技术网

如何使用HTML/CSS/JavaScript垂直对齐一个项目上的列表?

如何使用HTML/CSS/JavaScript垂直对齐一个项目上的列表?,javascript,html,css,Javascript,Html,Css,我有一个包含很长列表的HTML文档,如下所示: <ol> <li>frog</li> <li>fish</li> <li>flamingo</li> <li>ferret</li> <li><div class="marked">fox</div></li> ... </ol> 如

我有一个包含很长列表的HTML文档,如下所示:

<ol>
    <li>frog</li>
    <li>fish</li>
    <li>flamingo</li>
    <li>ferret</li>
    <li><div class="marked">fox</div></li>
    ...
</ol>

如何垂直对齐已上市商品的列表?

使用“显示”选项垂直显示列表

display: inline;
我通常使用内联块参数,这是

display: inline-block;
然后,您必须在css上执行此操作

.marked: { display: inline-block; }

我希望这对你有用。

好的,我真的希望我正确地理解了你,因为这比我预期的时间要长

首先,您必须找到要居中的元素、列表、列表中项目的高度以及要居中的元素的索引。(我从中偷了一个函数来完成最后一点,并将您的类更改为id。您可以确定它是否需要是类)


下面是一个基于James G.代码的解决方案,它通过使用
getBoundingClientRect()
避免了循环:


这个问题涉及很多数学问题。我正在努力寻找答案,但时间比我想象的要长。你能再解释一下你的问题吗?干得好。您可以使用
getBoundingClientRect
避免循环。看我的帖子。酷。多有用的功能啊,蒂尔。
.marked: { display: inline-block; }
function arrayObjectIndexOf(myArray, searchTerm) {
            for(var i = 0, len = myArray.length; i < len; i++) {
                if (myArray[i].firstChild === searchTerm) return i;
            }
            return -1;
        }

var list = document.getElementById('list'),
            listItems = list.children,
            listItemHeight = list.scrollHeight / listItems.length,
            target = elem,
            index = arrayObjectIndexOf(listItems, target);
list.scrollTop = (index * listItemHeight) - ((list.clientHeight - listItemHeight) / 2);
var list = document.getElementById('list'),
    marked= document.getElementById('marked'),
    crm= marked.getBoundingClientRect(),
    height= crm.bottom-crm.top;

list.scrollTop= (crm.top-height)-(list.clientHeight-height)/2;