如何创建固定的浮动加号按钮?

Posted

技术标签:

【中文标题】如何创建固定的浮动加号按钮?【英文标题】:How can I create a fixed floating plus button? 【发布时间】:2019-02-21 20:41:32 【问题描述】:

我希望为我的移动应用程序创建一个浮动操作按钮。类似于 Gmail 和 WhatsApp 移动应用程序中使用的那些(请参见图片中的红色按钮)

我正在使用 jQuery Mobile 构建一个小型应用程序,我希望该按钮能够将用户带到另一个页面。我已经研究了很长一段时间,结果好坏参半,但主要问题似乎是该按钮并未位于页面上所有其他内容的上方,并且一旦用户滚动就不会保持固定位置这页纸。

有没有人有任何资源或知识可以提供帮助?谢谢

【问题讨论】:

如果它停留在屏幕上的固定位置,即 css position: fixed 并且位于所有其他字段的顶部,则意味着它的 z-index 比页面上的任何其他内容都大。跨度> 【参考方案1】:

JQM footer 已经有fixed 定位和正确的z-index 可以与其他JQM 小部件(如面板等)很好地配合使用。为什么不使用它?

ui-btn-leftui-btn-right 类在 footer 中表现不佳,因此我使用了具有透明背景的网格。这种方法的优点是您可以在以后需要时快速添加更多按钮。

.ui-footer 
  border-width: 0 !important;
  background: transparent !important; 


.ui-grid-d  
  overflow: visible !important;
  background: transparent !important;

.ui-grid-d > .ui-block-a,
.ui-grid-d > .ui-block-b,
.ui-grid-d > .ui-block-c,
.ui-grid-d > .ui-block-d,
.ui-grid-d > .ui-block-e 
  text-align: center !important;
  background: transparent !important;
  padding-top: .3em;
  padding-bottom: .9em;


.ui-icon-big 
  height: 40px !important;
  width: 40px !important;
  margin-top: -18px !important;
  border-radius: 20px !important;

.ui-icon-big:after 
  width: 32px !important;
  height: 32px !important;
  background-size: 22px !important;
  background-color: #F4123D !important;
  background-color: rgba(244, 18, 61, 0.8) !important;
  margin-top: -16px !important;
  margin-left: -16px !important;
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
  <link href="https://fonts.googleapis.com/css?family=Jura" rel="stylesheet">
  <link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.css">
  <link rel="stylesheet" href="style.css" />
  <script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
  <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
  <script src="script.js">
  </script>
</head>

<body>
  <div data-role="page" id="page-one">
    <div data-role="content">
      <h3>Page content</h3>
      <hr>
    </div>
    <div data-role="footer" data-position="fixed" data-tap-toggle="false">
      <div class="ui-grid-d">
        <div class="ui-block-a"></div>
        <div class="ui-block-b"></div>
        <div class="ui-block-c"></div>
        <div class="ui-block-d"></div>
        <div class="ui-block-e">
          <a href="#" class="ui-btn ui-corner-all ui-icon-plus ui-icon-big ui-btn-icon-notext"></a>
        </div>
      </div>
    </div>
  </div>
</body>

</html>

此外,当页面内容大于屏幕高度时,您可以决定不使用data-tap-toggle="false"(默认为 true)以允许您的用户按需显示页脚按钮。

【讨论】:

【参考方案2】:

这更像是一个 CSS 问题而不是 JS 问题,尽管您可以使用其中任何一个来解决它。在 CSS 中,按钮元素或包含它的任何元素都应该具有属性;位置:绝对;和一个z-index:x; (一个高于 DOM 中任何其他元素的 z-index)。如果您尝试使用 JS 解决这个问题,那么您仍然必须拥有一个 z-index 属性,并且该属性仅在元素具有固定、绝对或相对位置属性时才有效……所以您不妨只使用 CSS。您可以使用 js 来确定窗口的高度(移动设备上的设备高度,因为浏览器不能像在桌面上那样调整大小),然后设置 top: Xpx 属性,以便按钮看起来在相同的位置不管的设备。

【讨论】:

它需要fixed 位置,而不是绝对位置,以便在滚动时保持在同一位置。此外,您无需抓取窗口高度即可将其放在屏幕底部。您可以为此设置bottom: 0【参考方案3】:

我认为pen 会对您有所帮助。它有一个教程链接。

为确保您的按钮高于所有其他元素,请将 z-index: 999 添加到 css 中的按钮。

您可以将z-index 视为层。 所以z-index: 2 元素将位于z-index:1 元素之上。

有关z-index css 属性的更多详细信息,请转到here 和here。

【讨论】:

【参考方案4】:

你在这里: https://material.io/develop/web/components/buttons/floating-action-buttons/

在此处了解更多信息: https://material.io/design/components/buttons-floating-action-button.html

【讨论】:

【参考方案5】:

您是否尝试过使用 CSS 中的“固定”或“粘性”属性值将图像保持在相对于浏览器窗口或用户滚动位置的位置?

希望这会有所帮助,这是我想到的第一个想法。

https://www.w3schools.com/cs-s-ref/pr_class_position.asp

【讨论】:

以上是关于如何创建固定的浮动加号按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建具有上部固定和下部浮动元素的 SliverAppBar?

如何创建转换为单张材料的浮动动作按钮

在 UITableView 上创建一个浮动按钮 [重复]

解锁锁定屏幕后如何保持浮动操作按钮固定在我的视图中?

在 iOS 中创建浮动操作按钮

Excel:如何创建快捷方式/浮动按钮以从工作表中的任何位置填充特定单元格?