Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在p:selectOneRadio上使用长文本时,标签不对齐

在p:selectOneRadio上使用长文本时,标签不对齐
EN

Stack Overflow用户
提问于 2020-04-08 15:51:10
回答 2查看 193关注 0票数 4

我正在尝试使用JSF和primefaces实现一个简单的接口。我需要一个问题列表,对于每个问题,用户将能够在不同的选项之间进行选择。这些选项很长,我对单选按钮的对齐有问题。

其中一个问题的代码如下:

代码语言:javascript
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">

<h:head>
</h:head>
<h:body>
    <h:form>
        <div class="ui-g">
            <div class="ui-g-1"></div>
            <div class="ui-g-10">
                <p:panelGrid columns="1" layout="grid"
                    styleClass="showcase-text-align-center">
                    <h2>Domanda 1</h2>
                    <p:selectOneRadio id="domanda1" layout="pageDirection">
                        <f:selectItem itemLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. " itemValue="1" />
                        <f:selectItem itemLabel="Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." itemValue="2" />
                        <f:selectItem itemLabel="Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur." itemValue="3" />
                        <f:selectItem itemLabel="Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium" itemValue="4" />
                    </p:selectOneRadio>
                </p:panelGrid>
            </div>
        </div>
    </h:form>
</h:body>
</html>

我得到的输出如下:

正如您所看到的,我有一个与最后一个单选按钮相关联的标签,它并没有与所有其他单选按钮对齐。有没有办法解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-28 11:51:00

关键是在css样式中更改显示的initial:

代码语言:javascript
运行
AI代码解释
复制
body .ui-selectmanycheckbox.ui-widget label, body .ui-selectoneradio.ui-widget label {
    display: initial;
    vertical-align: middle;
    margin-top: 0;
}
票数 1
EN

Stack Overflow用户

发布于 2020-04-08 18:07:48

您可以覆盖Primefaces样式来实现这一点(查看这里的How do I override default PrimeFaces CSS with custom styles?以获得完整的描述):

代码语言:javascript
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">

<h:head>
<style>
.ui-selectmanycheckbox.ui-widget td, .ui-selectoneradio.ui-widget td {
    display: flex;
}

.ui-selectoneradio label {
    word-break: break-all;
}
</style>
</h:head>
<h:body>
    <h:form>
        <div class="ui-g">
            <div class="ui-g-1"></div>
            <div class="ui-g-10">
                <p:panelGrid columns="1" layout="grid"
                    styleClass="showcase-text-align-center">
                    <h2>Domanda 1</h2>
                    <p:selectOneRadio id="domanda1" layout="pageDirection">
                        <f:selectItem
                            itemLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. "
                            itemValue="1" />
                        <f:selectItem
                            itemLabel="Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
                            itemValue="2" />
                        <f:selectItem
                            itemLabel="Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
                            itemValue="3" />
                        <f:selectItem
                            itemLabel="Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantiumExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteur"
                            itemValue="4" />
                    </p:selectOneRadio>
                </p:panelGrid>
            </div>
        </div>
    </h:form>
</h:body>
</html>

我还建议你检查一下caiuse,了解所用功能的浏览兼容性。

这是怎么回事(请注意,实际的行为可能取决于pf的版本,如果你正在使用一个特定的主题,这里我以pf 6.2中的components.css为例):Primefaces selectOneRadio创建一个表,所以每个单选按钮都在一个继承表单元格布局的单元格中。单个单选按钮基本上编写为两个项目,一个div,其中包含类型为radio的输入和标签。

这两个标签都继承了内联块显示,来自pf css。内联块显示在同一行中,如果它们适合,否则将每个块放在一行中。Display flex可以处理这种情况,调整内容以适应空间,请参阅this以获得更好的描述。

现在你只需要处理最后一个最坏的情况:一个比你的行更长的单词。为此,您可以使用分词样式。您可以在此处选择是在单词开始时开始换行(break- word ),还是在行结束时开始(break- all ),有关所有选项,请参阅here

我认为总是有不同的方法来实现布局,使用css,所以尝试一些指南并测试不同的方法来保持学习。

如果你愿意,Primefaces也有一个面向多平台的版本,所以响应式等,你可以在这里看到更多PrimeNG

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61104787

复制
相关文章
(译) 如何使用 React hooks 获取 api 接口数据
在本教程中,我想向你展示如何使用 state 和 effect 钩子在React中获取数据。 你还将实现自定义的 hooks 来获取数据,可以在应用程序的任何位置重用,也可以作为独立节点包在npm上发布。
Nealyang
2019/09/29
28.7K0
通过Zabbix API获取历史监控数据
Zabbix API可以通过JSON RPC协议来获取历史数据。 可以采用脚本或者任何支持JSON RPC的工具来使用API。
星哥玩云
2022/06/30
2.3K0
ABAP随笔-通过api获取新冠数据
Title Fiori获取新冠病毒API数据 突发奇想想要使用abap去获取个网站上公布的api,然后显示一下 就当最近学习NEPTUNE的小练习吧 百度一下获取疫情的网站API,也可以自己去ti
Tab Zhu
2022/06/27
1.1K0
ABAP随笔-通过api获取新冠数据
React通过jsonp来请求接口获取数据渲染数据
Fetch-jsonp https://github.com/camsong/fetch-jsonp
王小婷
2019/11/10
3K0
react: 怎么优雅使用获取数据
note: 如果你想了解最新的 react hooks 来获取处理数据的方法:https://www.robinwieruch.de/react-hooks-fetch-data/
西南_张家辉
2021/02/02
1.6K0
【React Native实战教程】GitHub Trending API数据的获取
GitHub Popular中有个treding模块,该模块是GitHub的treding的手机版,在这个模块中你可以使用只有在PC上才能使用的功能。为了开发这个treding模块我们需要获取GitHub的treding的API数据。不过不幸的的是GitHub并没有开放有关trending的API,所以想调GitHub的treding的API已经是不现实的了。
CrazyCodeBoy
2018/05/07
2.3K0
【React Native实战教程】GitHub Trending API数据的获取
ApplicationContext可以同时获取多个Bean吗?
在实际场景中提供了N个接口给第三方,常规情况下是不会同时调用的,如果N个接口同时调用,随着接口的数量和业务场景逻辑增加,将会给服务带来很不好的体验,但恰恰业务就是如此,面对同一类型的业务查询场景,我将策略模式应用到此接口上来应对。关于实际设计的demo可参考往期文章炫技?No.
疯狂的KK
2023/01/12
1.1K0
ApplicationContext可以同时获取多个Bean吗?
API网关怎么部署 不用api网关可以吗?
许多在互联网公司工作的人都了解api网关。所谓的api网关,就是一个统一的微服务应用访问入口。由于现在许多企业的应用APP功能繁多,种类交叉,所以一个统一的api网关入口可以帮助用户通过一个入口顺利的直达不同的微服务当中。不仅给用户访问带来方便,对于服务端的运维工作也会带来极大的方便,下面来看一看API网关怎么部署?
用户8715145
2021/12/21
2.6K0
通过Java API获取Hive Metastore中的元数据信息
在文章中,我们说到Hive 3.0.0版本开始,其单独提供了standalone metastore服务以作为像presto等处理引擎的元数据管理中心。
从大数据到人工智能
2022/01/19
2.9K0
怎样使用React Context API [每日前端夜话0x26]
React Context API 【https://reactjs.org/docs/context.html】现在已经成为一个实验性功能,但是只有在 React 16.3.0 【https://reactjs.org/blog/2018/03/29/react-v-16-3.html】中才能用在生产中。本文将向你展示两个基本的 Web 商店应用程序,一个使用了 Context API 进行构建,另一个则不用。
疯狂的技术宅
2019/03/27
9920
怎样使用React Context API [每日前端夜话0x26]
如何通过CM API优雅的获取元数据库密码
人啊,上了年纪了,总容易忘记一些事情,比如你一不小心就忘记了CDH集群Hive,Hue和Sentry服务的元数据库密码,对于数据库(MySQL/Oracle/PostgreSQL)管理员来说,可能有自己独特的一些奇技淫巧来找回密码。但对于咱普通人,其实Cloudera Manger提供了一种很优雅的方式让你找回元数据库密码,那就是神奇的Cloudera Manager API。
Fayson
2018/03/29
3.2K0
如何通过CM API优雅的获取元数据库密码
2021年50个酷炫的Web和移动项目创意
当想到项目创意时,很多人都在挣扎。这里列出了50个您可以在2021年完成的很棒的项目构想。我将以下列的技术栈为例,以便您弄清楚自己也可以做到这一点。这些应用程序可以在Web,移动和桌面上。您可以使用无数种工具,技术和编程语言来构建它们,我仅在此处显示一些用例。每个项目的编程级别均为初学者,中级或高级。这些应用程序可以创建为前端,后端或全栈。
海拥
2021/08/23
4.4K0
2021年50个酷炫的Web和移动项目创意
通过 Drone Rest API 获取构建记录日志
Drone是一款CICD工具,提供rest API,简单介绍下如何使用API 获取构建日志。
JadePeng
2020/02/18
1.2K0
通过post请求api获取土味情话
用的ALAPI,自己申请token填上即可。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title>
岳泽以
2022/10/26
7660
前端小白躺平摆烂可以吗
这几年毕业的大学生有多苦都不必我们说了。大学才4年,疫情占3年,好不容易熬到毕业,找工作又进入了炼狱模式。
物立
2022/08/30
4460
设计通过 POST 获取数据的 API 时需要注意的问题
现代网站越来越多的使用前后端分离架构,先用前端 MVC 框架快速堆砌出 SPA,再用 API 获取动态数据也已经成为日常的开发内容;而用来连接前后端的 API,其重要性也自然言而喻。做为一个前端码农,认识后端的 API 设计方式也是很重要的,今天让我们针对 API 设计来一探究竟。
疯狂的技术宅
2020/11/03
1.7K0
设计通过 POST 获取数据的 API 时需要注意的问题
Google JavaScript API 的使用
您可以使用JavaScript客户端库与Web应用程序中的Google API(例如,人物,日历和云端硬盘)进行交互。请按照此页面上的说明进行操作。
拿我格子衫来
2022/01/24
3.1K0
React Native迎来重大架构升级,性能将大幅提升
作者 | 郭蕾 7 月 14 日,React Native 核心团队的 Joshua Gross 在 Twitter 说,RN 的新架构已经在 Facebook 内部落地了,并且 99% 的代码已经开源。这次的架构升级“蓄谋已久”,Joshua 说他们从 2018 年 1 月就开始规划了。 Facebook 曾在 2018 年 6 月宣布了大规模 重构 RN 的计划和路线图,整个的重构目的是为了让 RN 更轻量化、更适应混合开发,接近甚至达到原生的体验。具体包括以下几个方面: 改变线程模型。UI 更新不再
深度学习与Python
2023/04/01
1.6K0
React Native迎来重大架构升级,性能将大幅提升
JQuery JavaScript常用API整理(前端入门必学)
现在MVVM框架逐渐占据了主要市场,很多老项目也逐渐的从jQuery转向了MVVM架构!JQuery还有必要学吗? 我的答案是jQuery必须学! JavaScript是基础,JQuery能让DOM操作更方便,哪怕用vue react当操作dom的时候 还是离不开的,只是说可以不用学的那么深。
鱼找水需要时间
2023/02/16
7140
点击加载更多

相似问题

如何通过javascript使用twitter API

11

是否可以通过Facebook API (比如通过Twitter API?)获取@提及

11

通过Twitter API javascript从时间线获取Twitter状态

11

REST Api:无法在前端获取数据(NodeJS/React)

13

React:无法通过API获取数据

119
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档