使用位置粘性删除不需要的空间

2023-11-23

我正在尝试使用position: sticky在旋转的元素上,但我在顶部获得了额外的空间。此外,粘性元素必须停止的地方(在父元素的末尾)它会移到外面。

请注意,我需要控制来选择粘性元素和左窗口侧之间放置的像素数。

检查第二个屏幕截图以了解这两个问题以及我想要实现的目标。

Problem 1: extra space at top State 1 (default at start)

Problem 2: sticky element goes outside at the end of section State 2 (at section end)

我正在使用这段代码:

HTML

<section class="section">

  <h1 class="section__title">STICKY</h1>

  <div class="container">
    <div class="row">
      <div class="col [ col-lg-8 offset-lg-2 ]">
        <div class="h4">
          Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsam quos illum aperiam officia provident, mollitia at, tempore atque, blanditiis sit optio esse harum officiis voluptas iusto sequi. Magni, reiciendis quidem.
        </div>
      </div>
    </div>
  </div>

</section>

CSS

.section__title {
  display: inline-block;
  transform: rotate(-90deg) translatex(-100%);
  transform-origin: 0% 0%; 
  margin-bottom: 0;

  position: sticky;
  top: 0;
  left: 50px;
}

这里有一个Codepen整个代码:https://codepen.io/anon/pen/KLqJGG

我该如何解决这个问题? 谢谢


问题1:顶部有多余空间

粘性定位的元素保留在 DOM 流中 - 就像relative定位元素确实如此。因此,那里的空间被h1.section__title元素。

问题2:粘性元素在节的末尾超出了外面

这是因为,原来的高度h1即使在旋转之后,元素仍然被考虑在那里。

因此,您需要首先确定粘性标题的确切宽度(旋转后将成为该元素的高度),然后将该宽度值设置为旋转后的元素的高度,如下所示:

$section-sticky-header-height: 145px;

.section__title {
  display: inline-block;
  margin-bottom: 0;
  transform-origin: 0% 0%; 
  position: sticky;
  top: 0;
  left: 50px;

  /* solves problem 1 */
  float: left; 

  /* solves problem 2 */
  transform: rotate(-90deg) translatex(-$section-sticky-header-height);
  height: $section-sticky-header-height;
}

代码笔:https://codepen.io/anon/pen/arybWZ


Edit:

问题是我无法确定粘性标题的确切宽度,因为 h1 文本是可变的(客户端将通过 CMS 插入该文本)。有办法处理这个问题吗?如果可以的话不用Javascript

知道了。如果高度可变,您可以尝试这样做:

<h1 class="h1 mb-0 section__title">
  <div class="rotation-outer">
    <div class="rotation-inner">
      <div class="rotation">
        STICKY
      </div>
    </div>
  </div>
</h1>
.section__title {
  border: 1px solid; // for demo purpose
  position: sticky;
  top: 0;
  float: left;

  .rotation-outer {
    display: table;
    position: relative;
    left: 50px;

    .rotation-inner {
      padding: 50% 0;
      height: 0;

      .rotation {
        transform-origin: 0 0;
        transform: rotate(-90deg) translate(-100%);
        margin-top: -50%;
        white-space: nowrap; 
      }
    }  
  }
}

查看实际操作:https://codepen.io/anon/pen/BedREm

关于其工作原理,这里有一个很好的解释:CSS 中的旋转元素会正确影响其父元素的高度


Edit 2:

在该链接中我还发现了writing-mode: vertical-rl;属性(在此答案中 stackoverflow.com/a/50406895/1252920)。您认为可能有更好的解决方案吗?我在 Codepen 中应用了它:codepen.io/anon/pen/JqyJWK?editors=1100 你觉得怎么样?

是的,您可以使用另一种甜蜜的选择。 :)

这里我稍微改变/优化了它:https://codepen.io/anon/pen/qGXPPe?editors=1100

但是,请注意vertical-lr or vertical-rl没有得到广泛支持。显然只在desktopChrome/Firefox/Opera 版本。See here。 因此,使用哪一个取决于您。就我个人而言,我不会使用writing-mode由于缺乏浏览器支持。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用位置粘性删除不需要的空间 的相关文章

  • 在 HTML5 iOS 7 / iOS 8 中显示十进制键盘

    经过几个小时的搜索后 我只是有一个简单的问题 是否有可能在网络浏览器输入字段中显示小数键盘 input type number 只显示数字 但我需要在左下角使用逗号或点 我尝试过任何事情 pattern step等等 但没有显示十进制键盘
  • 使用绝对定位时文本被破坏

    我有一个小挑战 我在 Stack Overflow 上没有找到任何解决方案 这就是我得到的 这就是我想要的 为了产生这个标题效果 我使用绝对位置 我什至不知道我的标题的宽度和高度 因此 使用此解决方案时 大文本会中断 My HTML div
  • 为不同的字体系列指定不同的字体大小

    有没有办法为不同的字体系列指定不同的字体大小 我想要使 用的字体 出于产品品牌目的 是一种有点罕见的字体 FlashDLig 并非所有 PC 和浏览器都支持 我的一台带有 IE 9 的 Windows 7 PC 不显示它 现在 对于我使用
  • 如何使用 CSS 媒体查询检测设备方向?

    在 JavaScript 中 可以使用以下方式检测方向模式 if window innerHeight gt window innerWidth portrait true else portrait false 但是 有没有一种方法可以仅
  • 如何将 Vue.js 作用域样式应用于通过视图路由器加载的组件?

    如何将 Vue js 作用域样式应用于通过以下方式加载的组件
  • 如何删除标题中的粗体?

    我有一个标题 h1 THIS IS A HEADLINE h1 如何使短语 THIS IS 不加粗 其余部分不做任何更改 我在文本装饰中找不到任何相关标签 标题看起来很粗体 因为它大尺寸 如果您已应用粗体或想要更改行为 您可以执行以下操作
  • 将特定字形与网络字体一起使用

    使用网络字体 我想使用字体功能设置 CSS 中的选项以及跨度类HTML 中 以便使用字体集中的特定替代字形 我需要以正确的语法使用哪些值 GID Unicode 才能定位特定的目标glyph内glyph备择方案 这些功能使用 OpenTyp
  • Bootstrap 导航栏与 Google 位置重叠自动完成下拉菜单

    我有一个导航栏 我试图在其中添加一个地点搜索框 除了谷歌位置提示框的一小部分被导航栏重叠 如下图所示 之外 一切几乎都有效 我尝试过改变z index输入框的值改为10或2000或90000但似乎没有效果 我还缺少其他需要做的事情吗 这是
  • 使用纯 CSS 创建向上和向下箭头图标或按钮

    我正在尝试使用纯 CSS 且无背景图像创建如下所示的 向上和向下 控制按钮 但是当我在 中添加箭头的CSS时li className after or li className before 主盒子的位置移动了 这是我遇到的问题的小提琴 g
  • 如何让CSS选择以字符串开头的ID(不是Javascript)?

    如果 HTML 中有这样的元素 id product42 id product43 如何匹配所有以 product 开头的 id 我已经看到了完全使用 javascript 执行此操作的答案 但是如何仅使用 CSS 执行此操作 id pro
  • 重新创建 CSS3 过渡三次贝塞尔曲线

    在 CSS3 过渡中 您可以将计时函数指定为 cubic bezier 0 25 0 3 0 8 1 0 在该字符串中 您仅指定曲线上点 P1 和 P2 的 XY 因为 P0 和 P3 始终分别为 0 0 0 0 和 1 0 1 0 根据苹
  • 使用内联样式有哪些风险?

    A 内容安全政策 https developer mozilla org en US docs Web HTTP CSP with a default src or style src指令将阻止内联样式应用于
  • LESS CSS 语法对现代化很有用

    通常我使用现代化 http modernizr com 了解浏览器的功能 同时 我用LESS CSS http lesscss org 使我的CSS更具可读性和可维护性 使用 LESS 嵌套规则的常见样式如下所示 header color
  • Gmail 无法在电子邮件上正确呈现字体

    我已经建立了一个 html 电子邮件并使用了 Google 字体 我已使用以下方法将字体包含在 head 标签中 if mso endif 并使用字体 即我这样做了
  • iPad - 无法在框架内滚动

    我无法滚动 iPad Safari 中框架内调用的 pdf 我已经尝试过两件事 2 指滚动 使用对象 嵌入代替框架 但这是行不通的 事实上我已经尝试了很多东西 溢出 高度等等 请帮我 先感谢您 根据这篇文章http support appl
  • 如何强制折断不可折断的字符串?

    我有一个根据数据库中包含的数据生成的 HTML 页面 数据库有时包含浏览器无法分解的长字符串 因为这些字符串不包含可分解的字符 空格 点 逗号等 有没有办法使用 html css 甚至 javascript 来解决这个问题 看到这个link
  • 如何覆盖 bootstrap 表 td 样式?

    我正在使用 Bootstrap 3 3我有一个 HTML 代码如下 div table class table table striped tr td 03 td td 04 td td 05 td td 06 td td 07 td td
  • R Shinydashboard 自定义 CSS 到 valueBox

    我一直在尝试将 valueBox 的颜色更改为自定义颜色 超出 validColors 中可用的颜色 但一直无法这样做 我知道有一种方法可以使用标签来包含自定义 CSS 但是我无法将它们放在正确的位置 ui lt dashboardPage
  • 没有类的 CSS 选择器

    我正在使用选择器来选择不具有一个类的所有元素 list th not foo some rules 我怎样才能将其应用到多个班级 list th not foo list th not bar some rules 上面的 CSS 当然不会
  • 水平对齐输入字段

    我正在尝试获取一个输入字段 并且它与同一水平线上的关联提交按钮相关 但事实证明这是一个挑战 这是我的代码

随机推荐

  • Matplotlib - 更改线条上方/下方的线条颜色

    I have a line plot and 2 hlines all using different colors and I m filling the areas where the main line crosses the hli
  • 根据长度将数据帧分割成相对均匀的块

    我必须创建一个函数 将提供的数据帧分割成所需大小的块 例如 如果数据帧包含 1111 行 我希望能够指定 400 行的块大小 并获得大小分别为 400 400 和 311 的三个较小的数据帧 是否有方便的函数来完成这项工作 存储和迭代切片数
  • C++ tokenize std string [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 C 中标记字符串 您好 我想知道如何使用 strtok 标记 std 字符串 string line hello world bye char pch strtok line c str 我收
  • Symfony形式:自定义调用的setter

    我有一个实体的 Symfony 表单自定义类型 我想自定义提交表单时执行的代码 但仅限于字段 例如 Symfony 默认会这样调用 entity gt setFoo value 我想做这样的调用 entity gt doSomething
  • R 和面向对象编程

    在 R 中 以一种或另一种方式进行面向对象编程是非常可能的 但是 与 Python 等不同 有很多方法可以实现面向对象 The R oo包 S3和S4班 参考课 the 原型包 我的问题是 What majorR 中 OO 编程的这些方式有
  • 与发布后的实际下载大小相比,testflight 应用程序大小是否膨胀很大?

    我用 Unity 构建了一个 iOS 游戏 我将其上传到 App Store 启用了位码 IPA 约为 200 mb 在 iTunes Connect 上 它显示我的构建尺寸约为每个设备 30mb 我很高兴看到 但是当我将构建添加到 Tes
  • 如何在asp.net c#中将日期字符串“dd/MM/yyyy”格式转换为“MM/dd/yyyy”?

    我想在 C 中将字符串日期格式 dd MM yyyy 转换为 MM dd yyyy 例子 string d 25 02 2012 i want to convert into 02 25 2012 您可以将其解析为DateTime对象使用D
  • 方法签名中的 Final 关键字[重复]

    这个问题在这里已经有答案了 可能的重复 接口方法中的最终参数 有什么意义 在尝试尝试一些事情时 我遇到了其中描述的问题这一页 interface B public int something final int a abstract cla
  • 如何恢复之前显示的Fragment?

    我在我的项目中使用兼容性包 v4 但在保留Fragment从视图中删除后周围 我有我的Activity显示 2 个片段 左侧是菜单框架 右侧是内容窗格 菜单框架有 3 个可以显示的不同菜单 片段 这就是我替换菜单片段的方式 public v
  • R Shiny:如何将数据表添加到动态创建的选项卡

    我目前正在尝试创建动态创建的数据表 每个数据表都有自己的选项卡 选项卡的数量由用户确定 我已经使用了来自的代码这个帖子作为一个框架 我能够动态创建选项卡 但我不知道如何将数据表添加到选项卡 数据表也由用户输入确定 因此 例如 在 ui R
  • 具有验证功能的独特 CD-KEY 生成算法

    我正在尝试创建一个独特的 CD KEY 放入我们产品的包装盒中 就像用户用来注册产品的标准软件盒中的普通 CD KEY 一样 然而 我们不销售软件 我们销售的是用于犯罪和医疗目的的 DNA 采集套件 用户将通过邮件收到带有 CD KEY 的
  • Angular.js 中哪些“东西”可以注入到其他东西中?

    我很难理解 Angular 中的依赖注入 所以我的问题是 谁能解释一下我们可以将哪些 类型 如控制器 工厂 提供者等 注入到其他类型中 包括相同 类型 的其他实例 我真正要找的是这张表 上面写满了 y n 对于具有相同行 列的单元格 这意味
  • 与组件相比,使用服务有哪些优点和缺点?

    在过去的几个月里 我一直致力于最新的 net 框架中的项目 我觉得在最新的 net 版本中 鼓励 服务 而不是组件 那是对的吗 我在silver light中看到过 我是silver light的初学者 所有的DB层操作都暴露为服务 不知道
  • 如何在Spring的CAS服务属性中正确设置服务URL

    当使用 Spring Security CAS 时 我总是遇到发送到 CAS 的回调 URL 即服务属性 的小障碍 我看过很多例子 例如this and this但它们都使用硬编码的 URL 甚至Spring 的 CAS 文档 典型的剪辑看
  • 我如何创建一个每次在 tkinter 中显示帧时运行的方法

    我有一个 GUI 应用程序 有几个窗口和按钮可以前进和后退 为此 我使用控制器并在每次窗口更改时将框架提升到顶部 这是我的控制器代码和典型框架 import Tkinter as tk python from tkFileDialog im
  • Django OperationalError:无法为连接创建新进程

    今天早上 在让 Django storages Boto 和 Django compressor 将静态文件放到 S3 上之后 我今天早上开始在生产环境中遇到此错误 尽管我不知道这是否相关 OperationalError could no
  • 如何持久存储目录中文件的值?

    我正在使用 C 在 VS2005 中开发 Windows 应用程序 在我的项目中 我生成 dll 并将它们存储在一个目录中 这些 dll 将被命名为 TestAssembly1 TestAssembly2 TestAssembly3 等 所
  • Node.js 连接 ftp 并下载文件

    你好 我下载了这个 npm 模块来连接到我的 ftp 节点FTPS 连接等级 var FTPS require ftps var ftps new FTPS host myhost username user password mypw p
  • Interlocked.CompareExchange 是否使用内存屏障?

    我正在阅读乔 达菲 Joe Duffy 的帖子读写易失性和时效性 我试图理解帖子中最后一个代码示例的一些内容 while Interlocked CompareExchange ref m state 1 0 0 m state 0 whi
  • 使用位置粘性删除不需要的空间

    我正在尝试使用position sticky在旋转的元素上 但我在顶部获得了额外的空间 此外 粘性元素必须停止的地方 在父元素的末尾 它会移到外面 请注意 我需要控制来选择粘性元素和左窗口侧之间放置的像素数 检查第二个屏幕截图以了解这两个问