I’m having some problems trying to identify why in this snippet the container__item--special
behaves as a sticky element
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container {
display: flex;
overflow-x: auto;
position: relative;
}
.container__item {
width: 200px;
height: 50px;
border: 1px solid;
flex-shrink: 0;
}
.container__item--special {
position: sticky;
left: 0;
background-color: red;
}
</style>
</head>
<body>
<div class="container">
<div class="container__item"></div>
<div class="container__item"></div>
<div class="container__item container__item--special"></div>
<div class="container__item"></div>
<div class="container__item"></div>
<div class="container__item"></div>
<div class="container__item"></div>
</div>
</body>
</html>
But in here it doesn’t
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container {
display: flex;
flex-direction: column;
overflow-x: auto;
position: relative;
}
.sub-container {
display: flex;
}
.container__item {
width: 200px;
height: 50px;
border: 1px solid;
flex-shrink: 0;
}
.container__item--special {
position: sticky;
left: 0;
background-color: red;
}
</style>
</head>
<body>
<div class="container">
<div class="sub-container">
<div class="container__item"></div>
<div class="container__item"></div>
<div class="container__item container__item--special"></div>
<div class="container__item"></div>
<div class="container__item"></div>
<div class="container__item"></div>
<div class="container__item"></div>
</div>
<div class="sub-container">
<div class="container__item"></div>
<div class="container__item"></div>
<div class="container__item"></div>
<div class="container__item"></div>
<div class="container__item"></div>
<div class="container__item"></div>
</div>
</div>
</body>
</html>
2
Answers
Please review below updated code where only the CSS in the "sub-container" and "container" class needs modification. You just need to add "container" class css to "sub-container" class.
Please update here if this works for you.
Add some border to the parent element to understand what is happening:
You have a little space for the sticky behavior because the parent is limited to its parent width due to the stretch default alignment. Disable it and it will work as you like