编辑媒体使用事件侦听器查询CSS

时间:2017-09-25 08:17:11

标签: javascript html css media-queries

我有一个无序列表<ul>,我想添加一个事件监听器 如果它适合某个媒体查询。

原来的css:

        @media (max-width: 414px) {
          transition: all 3s ease-out;
          height: 0px;
          display: none;
        }

eventlistener函数:

    if(window.matchMedia("max-width: 414px")) {
      console.log(list.style.height);
      console.log(list.style.display);
      list.style.height = 'auto'
      list.style.display = 'unset'
    }

帮助:转型似乎不起作用&amp; list.style.height&amp;的控制台日志list.style.display都是空的''

2 个答案:

答案 0 :(得分:2)

转换无效,因为您要将显示从/更改为none。此外,您需要在height之间转换数值(auto不计算在内)。

CSS:

@media (max-width: 414px) {
    transition: all 3s ease-out;
    height: 0;
}

JS:

if (window.matchMedia("(min-width: 414px)").matches) {
  list.style.height = list.style.height + 'px'; // set the exact height
}

答案 1 :(得分:2)

由于这行

,它无法正常工作,而你的控制台是空的
if(window.matchMedia("max-width: 414px")) {

一定是

 if (window.matchMedia("(max-width: 414px)").matches) {

转换不适用于display:noneheight:auto ..

您可以尝试使用opacity代替display

我制作了一个样本fiddle ..

试着看看控制台,你可以看到它不再是空的。