Почему 3 композитных слоя для одного и того же прокручиваемого списка (Chrome)? - PullRequest
0 голосов
/ 04 августа 2020

Я получаю 3 разных слоя на вкладке Layers Chrome для одного и того же прокручиваемого списка. Это CSS элемента:

display: block;
backface-visibility: hidden;
transform: translate3d(0, 0, 0);
top: 45px;
position: absolute;
right: 0px;
left: 0px;
bottom: 0;
overflow: auto;
z-index: 100;
background: #ccc;
padding: 0 10px;

Для каждого слоя указаны причины компоновки :

  • "Вторичный слой, вертикальный слой полосы прокрутки «
  • » Вторичный слой для размещения содержимого, которое можно прокручивать »
  • « Прокручиваемый элемент переполнения. Имеет клип, который должен быть известен композитору из-за составных потомков ».

Каждая из этих причин имеет смысл в качестве индивидуальных причин для продвижения узла в отдельный слой композитинга, но почему 3 слоя?

Я не могу найти ничего окончательного в Интернете. Ближайшее, что я нашел, - это , это и связанные страницы, но некоторые из них сломаны, а одна устарела и смело заявляет о предстоящих существенных изменениях. Любые идеи / направления будут очень приветствоваться, спасибо!

Обновление 1 : Вот живая демонстрация. list-grandparent и first-list - это узлы, которые показывают несколько уровней в моем устройстве. В идеале вы должны просматривать это с помощью Chrome вместо Android, вот где мне нужно исправить проблему.

html, body {
  overflow: hidden;
    position: fixed;
    top: 0;
    right: 0;
    left: 0;
  min-height: 100vh;
}

.outermost-wrap {
  position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    overflow: hidden;
    background: transparent;
    z-index: 0;
}

.double-viewport-width {
  overflow-x: auto;
    height: 100%;
    position: relative;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-transform: translate3D(0, 0, 0);
  width: 200vw;
}

.single-viewport-width {
  width: 100vw;
  position: absolute;
    top: 0;
    bottom: 0;
    overflow-y: hidden;
    -webkit-backface-visibility: hidden;
    -webkit-transform: translate3D(0, 0, 0)
}

.single-viewport-width:nth-child(1) {
  left: 0;
}

.single-viewport-width:nth-child(2) {
  left: 50%;
}

.list-grandparent {
  backface-visibility: hidden;
    transform: translate3d(0, 0, 0);
    top: 45px;
  display: block;
  position: absolute;
    right: 0px;
    left: 0px;
    bottom: 0;
    top: 0;
    overflow-y: scroll;
    -webkit-overflow-scrolling: touch;
    -ms-overflow-style: -ms-autohiding-scrollbar;
    z-index: 100;
    background: #ccc;
    padding: 0 10px;
}

.first-list {
  padding: 0 5px;
    background-color: #fff;
    position: relative;
  margin-bottom: 60px;
  list-style: none;
}

.list-item {
  padding: 8px 5px;
    margin: 0;
    position: relative;
    background: #fff;
    border-bottom: solid 2px #eee;
    font-size: 1.1em;
    line-height: 1.3em;
    color: #000000;
    min-height: 54px;
}

.clickable-item {
  text-decoration: none;
  background-color: transparent;
}

.avatar {
  background-image: url(https://placehold.it/100x100);
  background-color: #EEEEEE;
    background-position: center center;
    background-repeat: no-repeat;
    background-size: cover;
    border-radius: 2px;
    float: left;
    height: 2.3em;
    margin: 2px 2% 0 0;
    width: 2.3em;
    max-width: 18%;
}

.text {
  clear: both;
    float: none;
    word-wrap: break-word;
  display: block;
    color: #666;
}

.image {
  position: relative;
    background-repeat: no-repeat;
    background-size: contain;
    background-position: center;
    margin: 10px -13px;
    clear: both;
  display: block;
    color: #666;
}

.image img {
  width: 100%;
}

.more-clickable-stuff {
  background: none;
  color: #222;
    display: inline-block;
    font-size: 0.95em;
    width: 83%;
    max-width: 100%;
    position: relative;
}

.clickable-text {
  max-width: 67%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: inline-block;
    padding: 0;
    margin: 0 3px 0 0;
}
<div class="outermost-wrap">
  <div class="double-viewport-width">
    <div class="single-viewport-width">
      <div class="list-grandparent">
        <ul class="first-list">
          <li class="list-item">
            <a class="clickable-item">
              <div class="avatar"></div>
              <span class="text">Hello there</span>
              <span class="image">
                <img src="https://placehold.it/400x400/fff999" alt="placeholder" />
              </span>
            </a>
            <a class="more-clickable-stuff">
              <span class="clickable-text">I can be clicked</span>
            </a>
          </li>
          <li class="list-item">
            <a class="clickable-item">
              <div class="avatar"></div>
              <span class="text">Second Hello there</span>
              <span class="image">
                <img src="https://placehold.it/400x400/999fff" alt="placeholder" />
              </span>
            </a>
            <a class="more-clickable-stuff">
              <span class="clickable-text">I can be clicked too</span>
            </a>
          </li>
          <li class="list-item">
            <a class="clickable-item">
              <div class="avatar"></div>
              <span class="text">Third Hello there</span>
              <span class="image">
                <img src="https://placehold.it/400x400/99fff9" alt="placeholder" />
              </span>
            </a>
            <a class="more-clickable-stuff">
              <span class="clickable-text">I can be clicked three</span>
            </a>
          </li>
        </ul>
      </div>
    </div>
    <div class="single-viewport-width">
      <!-- there's other stuff here but I haven't included it -->
    </div>
  </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...