сделал три варианта, с какими-то результатами. У каждого есть свои идеи и ограничения.
Первый , модифицированный Ответ Райана Нгиема
Основное отличие - сделано tt class
авто квадрат и перемещен заголовок к тексту слева. Основное ограничение - заголовок не go ниже нижнего края контейнера.
body {
color: white !important;
background-color: black !important;
}
/* Work Section */
.work-section {
padding-bottom: 20px;
}
.container {
position: relative;
}
.abs-work {
position: absolute;
width: 100%;
top:0;
bottom:0;
left: -1%;
}
.work-title {
position: -webkit-sticky;
position: sticky;
top: 0;
transform: rotate(-90deg);
width: fit-content;
}
.tt {
position: relative;
width: fit-content;
padding-bottom: 100%;
}
.test-img {
width: 100%;
}
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="styles-abs.css">
</head>
<body>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Random-Code</title>
<!-- Required meta tags -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- bootstrap -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
</head>
<body>
<section>
<div style="height: 150px"></div>
</section>
<section id="work-section1">
<div class="container">
<div class="abs-work">
<div class="work-title">
<div class="tt">
<h2>Recent Work</h2>
</div>
</div>
</div>
<div>
<div class="row work-section">
<div class="col-md-6">
<h3>Tuml</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Sequi exercitationem, aperiam
nisi
dolor harum corrupti necessitatibus dolore dolores nesciunt voluptate iste nobis amet
omnis
deserunt minima officiis, facere quisquam eius
fugiat. Recusandae at molestiae voluptate quasi aliquid? Mollitia animi, dolore fuga
impedit
rerum ratione minus quas enim natus aperiam nihil!
</p>
<button type="button" class="btn btn-outline-dark align-self-end">Dark</button>
</div>
<div class="col-md-5 offset-md-1 align-self-center">
<figure>
<img class="test-img" src="https://i.ibb.co/rH7c4mM/9000.gif" alt="9000" border="0">
</figure>
</div>
</div>
<div class="row work-section">
<div class="col-md-6">
<h3>Tuml</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Sequi exercitationem, aperiam
nisi
dolor harum corrupti necessitatibus dolore dolores nesciunt voluptate iste nobis amet
omnis
deserunt minima officiis, facere quisquam eius
fugiat. Recusandae at molestiae voluptate quasi aliquid? Mollitia animi, dolore fuga
impedit
rerum ratione minus quas enim natus aperiam nihil!
</p>
<button type="button" class="btn btn-outline-dark align-self-end">Dark</button>
</div>
<div class="col-md-5 offset-md-1 align-self-center">
<figure>
<img class="test-img" src="https://i.ibb.co/rH7c4mM/9000.gif" alt="9000" border="0">
</figure>
</div>
</div>
<div class="row work-section">
<div class="col-md-6">
<h3>Tuml</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Sequi exercitationem, aperiam
nisi
dolor harum corrupti necessitatibus dolore dolores nesciunt voluptate iste nobis amet
omnis
deserunt minima officiis, facere quisquam eius
fugiat. Recusandae at molestiae voluptate quasi aliquid? Mollitia animi, dolore fuga
impedit
rerum ratione minus quas enim natus aperiam nihil!
</p>
<button type="button" class="btn btn-outline-dark align-self-end">Dark</button>
</div>
<div class="col-md-5 offset-md-1 align-self-center">
<figure>
<img class="test-img" src="https://i.ibb.co/rH7c4mM/9000.gif" alt="9000" border="0">
</figure>
</div>
</div>
<div class="row work-section">
<div class="col-md-6">
<h3>Tuml</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Sequi exercitationem, aperiam
nisi
dolor harum corrupti necessitatibus dolore dolores nesciunt voluptate iste nobis amet
omnis
deserunt minima officiis, facere quisquam eius
fugiat. Recusandae at molestiae voluptate quasi aliquid? Mollitia animi, dolore fuga
impedit
rerum ratione minus quas enim natus aperiam nihil!
</p>
<button type="button" class="btn btn-outline-dark align-self-end">Dark</button>
</div>
<div class="col-md-5 offset-md-1 align-self-center">
<figure>
<img class="test-img" src="https://i.ibb.co/rH7c4mM/9000.gif" alt="9000" border="0">
</figure>
</div>
</div>
</div>
</div>
</section>
<section>
<div style="height: 1800px"></div>
</section>
</body>
<!-- Scripts Jquery Bootstrap -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js "
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo "
crossorigin="anonymous "></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js "
integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6 "
crossorigin="anonymous "></script>
</html>
<script src="js/scripts.js"></script>
</body>
</html>
Второй вариант, используется display: flex
. Заголовок идет ниже нижнего края контейнера.
Основное ограничение - <div>
с шириной заголовка, которая имеет значение, и шире с более длинным заголовком.
body {
color: white !important;
background-color: black !important;
}
/* Work Section */
.container {
position: relative;
display: flex;
}
.work-section {
padding-bottom: 20px;
}
.work-title {
position: -webkit-sticky;
position: sticky;
top: 0;
transform: rotate(-90deg);
transform-origin: 90% 90%;
white-space: nowrap;
}
.tt {
position: relative;
width: fit-content;
}
.test-img {
width: 100%;
}
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="styles-flex.css">
</head>
<body>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Random-Code</title>
<!-- Required meta tags -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- bootstrap -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
</head>
<body>
<section>
<div style="height: 150px"></div>
</section>
<section id="work-section1">
<div class="container">
<div>
<div class="work-title">
<div class="tt">
<h2>Recent Work</h2>
</div>
</div>
</div>
<div>
<div class="row work-section">
<div class="col-md-6">
<h3>Tuml</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Sequi exercitationem, aperiam
nisi
dolor harum corrupti necessitatibus dolore dolores nesciunt voluptate iste nobis amet
omnis
deserunt minima officiis, facere quisquam eius
fugiat. Recusandae at molestiae voluptate quasi aliquid? Mollitia animi, dolore fuga
impedit
rerum ratione minus quas enim natus aperiam nihil!
</p>
<button type="button" class="btn btn-outline-dark align-self-end">Dark</button>
</div>
<div class="col-md-5 offset-md-1 align-self-center">
<figure>
<img class="test-img" src="https://i.ibb.co/rH7c4mM/9000.gif" alt="9000" border="0">
</figure>
</div>
</div>
<div class="row work-section">
<div class="col-md-6">
<h3>Tuml</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Sequi exercitationem, aperiam
nisi
dolor harum corrupti necessitatibus dolore dolores nesciunt voluptate iste nobis amet
omnis
deserunt minima officiis, facere quisquam eius
fugiat. Recusandae at molestiae voluptate quasi aliquid? Mollitia animi, dolore fuga
impedit
rerum ratione minus quas enim natus aperiam nihil!
</p>
<button type="button" class="btn btn-outline-dark align-self-end">Dark</button>
</div>
<div class="col-md-5 offset-md-1 align-self-center">
<figure>
<img class="test-img" src="https://i.ibb.co/rH7c4mM/9000.gif" alt="9000" border="0">
</figure>
</div>
</div>
<div class="row work-section">
<div class="col-md-6">
<h3>Tuml</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Sequi exercitationem, aperiam
nisi
dolor harum corrupti necessitatibus dolore dolores nesciunt voluptate iste nobis amet
omnis
deserunt minima officiis, facere quisquam eius
fugiat. Recusandae at molestiae voluptate quasi aliquid? Mollitia animi, dolore fuga
impedit
rerum ratione minus quas enim natus aperiam nihil!
</p>
<button type="button" class="btn btn-outline-dark align-self-end">Dark</button>
</div>
<div class="col-md-5 offset-md-1 align-self-center">
<figure>
<img class="test-img" src="https://i.ibb.co/rH7c4mM/9000.gif" alt="9000" border="0">
</figure>
</div>
</div>
<div class="row work-section">
<div class="col-md-6">
<h3>Tuml</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Sequi exercitationem, aperiam
nisi
dolor harum corrupti necessitatibus dolore dolores nesciunt voluptate iste nobis amet
omnis
deserunt minima officiis, facere quisquam eius
fugiat. Recusandae at molestiae voluptate quasi aliquid? Mollitia animi, dolore fuga
impedit
rerum ratione minus quas enim natus aperiam nihil!
</p>
<button type="button" class="btn btn-outline-dark align-self-end">Dark</button>
</div>
<div class="col-md-5 offset-md-1 align-self-center">
<figure>
<img class="test-img" src="https://i.ibb.co/rH7c4mM/9000.gif" alt="9000" border="0">
</figure>
</div>
</div>
</div>
</div>
</section>
<section>
<div style="height: 1800px"></div>
</section>
</body>
<!-- Scripts Jquery Bootstrap -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js "
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo "
crossorigin="anonymous "></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js "
integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6 "
crossorigin="anonymous "></script>
</html>
<script src="js/scripts.js"></script>
</body>
</html>
Третий вариант смешной, просто для идей.
body {
color: white !important;
background-color: black !important;
}
/* Work Section */
.container {
display: flex;
}
.work-section {
padding-bottom: 20px;
}
.test-img {
width: 100%;
}
.lala2 {
display: flex;
position: sticky;
top: 0;
height: fit-content;
}
.lala {
display: flex;
flex-direction: column-reverse;
margin-bottom: auto;
margin-right: 8px;
}
.lala div {
transform: rotate(-90deg);
font-size: 2rem;
display: flex;
}
.lala div span {
margin-left: auto;
margin-right: auto;
}
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Random-Code</title>
<!-- Required meta tags -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- bootstrap -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
</head>
<body>
<section>
<div style="height: 150px"></div>
</section>
<section id="work-section1">
<div class="container">
<div class="lala2">
<div class="lala">
<div><span>R</span></div>
<div><span>e</span></div>
<div><span>c</span></div>
<div><span>e</span></div>
<div><span>n</span></div>
<div><span>t</span></div>
<div><span> </span></div>
<div><span>W</span></div>
<div><span>o</span></div>
<div><span>r</span></div>
<div><span>k</span></div>
</div>
</div>
<div>
<div class="row work-section">
<div class="col-md-6">
<h3>Tuml</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Sequi exercitationem, aperiam
nisi
dolor harum corrupti necessitatibus dolore dolores nesciunt voluptate iste nobis amet
omnis
deserunt minima officiis, facere quisquam eius
fugiat. Recusandae at molestiae voluptate quasi aliquid? Mollitia animi, dolore fuga
impedit
rerum ratione minus quas enim natus aperiam nihil!
</p>
<button type="button" class="btn btn-outline-dark align-self-end">Dark</button>
</div>
<div class="col-md-5 offset-md-1 align-self-center">
<figure>
<img class="test-img" src="https://i.ibb.co/rH7c4mM/9000.gif" alt="9000" border="0">
</figure>
</div>
</div>
<div class="row work-section">
<div class="col-md-6">
<h3>Tuml</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Sequi exercitationem, aperiam
nisi
dolor harum corrupti necessitatibus dolore dolores nesciunt voluptate iste nobis amet
omnis
deserunt minima officiis, facere quisquam eius
fugiat. Recusandae at molestiae voluptate quasi aliquid? Mollitia animi, dolore fuga
impedit
rerum ratione minus quas enim natus aperiam nihil!
</p>
<button type="button" class="btn btn-outline-dark align-self-end">Dark</button>
</div>
<div class="col-md-5 offset-md-1 align-self-center">
<figure>
<img class="test-img" src="https://i.ibb.co/rH7c4mM/9000.gif" alt="9000" border="0">
</figure>
</div>
</div>
<div class="row work-section">
<div class="col-md-6">
<h3>Tuml</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Sequi exercitationem, aperiam
nisi
dolor harum corrupti necessitatibus dolore dolores nesciunt voluptate iste nobis amet
omnis
deserunt minima officiis, facere quisquam eius
fugiat. Recusandae at molestiae voluptate quasi aliquid? Mollitia animi, dolore fuga
impedit
rerum ratione minus quas enim natus aperiam nihil!
</p>
<button type="button" class="btn btn-outline-dark align-self-end">Dark</button>
</div>
<div class="col-md-5 offset-md-1 align-self-center">
<figure>
<img class="test-img" src="https://i.ibb.co/rH7c4mM/9000.gif" alt="9000" border="0">
</figure>
</div>
</div>
<div class="row work-section">
<div class="col-md-6">
<h3>Tuml</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Sequi exercitationem, aperiam
nisi
dolor harum corrupti necessitatibus dolore dolores nesciunt voluptate iste nobis amet
omnis
deserunt minima officiis, facere quisquam eius
fugiat. Recusandae at molestiae voluptate quasi aliquid? Mollitia animi, dolore fuga
impedit
rerum ratione minus quas enim natus aperiam nihil!
</p>
<button type="button" class="btn btn-outline-dark align-self-end">Dark</button>
</div>
<div class="col-md-5 offset-md-1 align-self-center">
<figure>
<img class="test-img" src="https://i.ibb.co/rH7c4mM/9000.gif" alt="9000" border="0">
</figure>
</div>
</div>
</div>
</div>
</section>
<section>
<div style="height: 1800px"></div>
</section>
</body>
<!-- Scripts Jquery Bootstrap -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js "
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo "
crossorigin="anonymous "></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js "
integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6 "
crossorigin="anonymous "></script>
</html>
<script src="js/scripts.js"></script>
</body>
</html>