Исправление линейного цвета фона на дисплее: содержимое прокрутки при переполнении флексом - CSS - PullRequest
1 голос
/ 24 марта 2020

У меня есть прокручиваемый слайдер, я поместил фоновый линейный эффект с ::after в родительский тег, который делает его overflow:scroll, но когда я прокручиваю влево, цвет фона перемещается вместе с содержимым. Я хочу, чтобы это было исправлено в правильном положении. Lemme показать пример кода:

.coursesSection--slider {
  display: flex;
  overflow: auto;
  position: relative;
}

.coursesSection--slider::after {
  content: '';
  background-image: linear-gradient(to right, transparent 95%, #fff 100%);
  width: 100%;
  height: 100%;
  position: absolute;
  right: 0;
  top: 0;
}

.courseCard {
  flex: 0 0 auto;
  width: 100px;
  height: 100px;
  background-color: red;
  margin-right: 10px;
}
<div class="coursesSection--slider">
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
</div>

Посмотрите на этот фоновый линейный эффект, и когда вы будете прокручивать влево, он будет двигаться, я хочу исправить только с этим разделом (родительский) html tag).
Позвольте мне сказать вам одну важную вещь: у меня есть содержимое сверху и снизу, поэтому я не могу дать ему positon: fixed;, оно сломает его и не будет работать идеально.
Пожалуйста помоги мне

Ответы [ 2 ]

2 голосов
/ 24 марта 2020

Вам нужна позиция: липкий здесь:

.coursesSection--slider {
  display: flex;
  overflow: auto;
  position: relative;
  border:1px solid;
}

.coursesSection--slider::after {
  content: '';
  background-image: linear-gradient(to right, transparent , #fff );
  width: 5%;
  margin-left:auto;  /* push to the right */
  flex-shrink:0;
  position: sticky;
  right: 0;
}
.courseCard:last-child {
  margin-right:-5%; /* same as pseudo element width to create overlap */
}

.courseCard {
  flex: 0 0 auto;
  width: 100px;
  height: 100px;
  background-color: red;
  margin-right: 10px;
}
<div class="coursesSection--slider">
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
</div>
0 голосов
/ 24 марта 2020

Попробуйте положение fixed вместо absolute и z-index для последней карты

.coursesSection--slider {
  display: flex;
  overflow: auto;
  position: relative;
}

.coursesSection--slider::after {
  content: '';
  background-image: linear-gradient(to right, transparent 0%, #fff 100%);
  width: 40px;
  height: 100px;
  position: fixed;
  right: 0;
  top: 0;
}

.courseCard {
  flex: 0 0 auto;
  width: 100px;
  height: 100px;
  background-color: red;
  margin-right: 10px;
}

.courseCard:last-child {
  z-index: 2;
}
<div class="coursesSection--slider">
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
  <div class="courseCard"></div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...