Ion-fab按钮重叠其他Ion组件问题求助
问题
我用ion-fab放置按钮,不管用内边距样式、ion-item-dividers还是外部CSS,按钮都会重叠下方的日期选择器ion-list和ion-button,怎么让ion-fab和上下内容分隔开?
相关代码:
<!--End Date Pciker--> <ion-list > <ion-accordion-group > <ion-accordion #myAccordion value="start"> <ion-item slot="header"> <ion-label >End Date</ion-label> <ion-note slot="end" id="datetimeValue">{{selectedEndDate | date: 'dd/MM/yyyy'}}</ion-note> </ion-item> <ion-datetime id="datetime" displayFormat="dd/MM/yyyy" slot="content" presentation="date" min="01-01-1980" max="31-01-2100" [(ngModel)]="selectedEndDate" name="selectedEndDate" ></ion-datetime> </ion-accordion> </ion-accordion-group> </ion-list> <!-- Button for Capturing Photo , try ion-fab first--> <ion-item-divider></ion-item-divider> <ion-fab vertical="center" horizontal="center" slot="fixed">get cert <ion-fab-button (click)="getCertficatePhoto()"> <ion-icon name="camera"></ion-icon> </ion-fab-button> </ion-fab> <ion-button style="margin-top: 20px;" fill="outline" expand="block" color="primary" type="submit">{{editEvent ? 'Update' : 'ADD'}}</ion-button> </form> </ion-content>
解决方法
问题核心是slot="fixed"会让ion-fab脱离文档流,固定在页面位置,自然和其他元素重叠。以下是几个可行方案:
方案1:移除fixed插槽,让fab跟随文档流
直接删掉slot="fixed",fab会正常占据文档空间,不会重叠。再用Flex布局调整居中,给上下元素加margin分隔:
<!-- 修改后的ion-fab部分 --> <ion-item-divider></ion-item-divider> <div style="display: flex; justify-content: center; margin: 20px 0;"> <ion-fab>get cert <ion-fab-button (click)="getCertficatePhoto()"> <ion-icon name="camera"></ion-icon> </ion-fab-button> </ion-fab> </div> <ion-button style="margin-top: 20px;" fill="outline" expand="block" color="primary" type="submit">{{editEvent ? 'Update' : 'ADD'}}</ion-button>
方案2:保留fixed定位,给上下元素加间距避开fab
如果一定要用slot="fixed",手动给上方ion-list和下方ion-button加足够margin,避开fab区域:
<!-- 给上方列表加底部margin --> <ion-list style="margin-bottom: 60px;"> <!-- 原内容不变 --> </ion-list> <!-- 保留fixed的fab --> <ion-fab vertical="center" horizontal="center" slot="fixed">get cert <ion-fab-button (click)="getCertficatePhoto()"> <ion-icon name="camera"></ion-icon> </ion-fab-button> </ion-fab> <!-- 给按钮加更大的顶部margin --> <ion-button style="margin-top: 80px;" fill="outline" expand="block" color="primary" type="submit">{{editEvent ? 'Update' : 'ADD'}}</ion-button>
数值可根据fab实际大小调整,确保无重叠。
方案3:使用ion-fab的其他内置插槽
比如用slot="bottom"让fab固定在页面底部,避免和中间元素重叠,再调整按钮位置:
<ion-fab vertical="bottom" horizontal="center" slot="fixed">get cert <ion-fab-button (click)="getCertficatePhoto()"> <ion-icon name="camera"></ion-icon> </ion-fab-button> </ion-fab> <!-- 给按钮加底部margin避开fab --> <ion-button style="margin: 20px 0 80px;" fill="outline" expand="block" color="primary" type="submit">{{editEvent ? 'Update' : 'ADD'}}</ion-button>
内容的提问来源于stack exchange,提问作者dancingbush
相关产品推荐
相关产品推荐

