带有可变参数的动态CSS? (是否可以?)

2024-02-07

我正在尝试创建一个菜单系统,该系统会根据有多少“li”条目水平动态调整自身大小以进行填充,我正在使用 XSLT 动态创建网页。我的想法是这是否可以在 CSS 中完成?

这是我专门用于 HTML 页面的 CSS

nav[role="navigation"] li {
    float: left;
    width: 10.00%;  /* I want to dynamically set this width */
}

有问题的 HTML 片段

<nav role="navigation" count="2"><?xml version="1.0" encoding="utf-8"?>
  <ul>
    <li>
      <a href="movies.html">Movies</a>
    </li>
    <li>
      <a href="news.html">News</a>
    </li>
  <ul>
</nav>

我的想法是这样的东西是否可以使用参数调用CSS,或者我是否违背它的声明方式?

nav[role="navigation"] li param {
    float: left;
            switch(param)
            {
               case : 5
               {
          width: 20.00%;
               }
               case : 3
               {
          width: 33.33333%;
               }
            }
}

CSS 不是一种编程语言。 CSS3 有一些逻辑,但没有switch().

就您的目的而言,迄今为止最简单的解决方案是使用 javascript,此处提供的假设您使用 jQuery:

var $navLis = $('nav[role=navigation] > ul > *');
$navLis.addClass('count'+$navLis.length);  // add a class to every li indicating 
                                           // total number of list items

然后在你的CSS中:

nav[role=navigation] li { /* default styling & width */ }
nav[role=navigation] li.count2 { /* your conditional styling */ }
nav[role=navigation] li.count5 { /* your conditional styling */ }
/* etc */

或者直接使用 jQuery 设置宽度:

$navLis.style('width', (100/$navLis.length)+'%');

If you demand纯CSS,然后拿出你的逻辑帽子看看CSS3 选择器规范 http://www.w3.org/TR/css3-selectors/#sibling-combinators。您可以构造一些拜占庭式且相当脆弱的 CSS 代码来伪造逻辑,例如以下选择器。

nav[role=navigation] li:first-child + nav[role=navigation] li:last-child {
  /* matches last of two items if a list has only two items */
}

如果您使用的 CMS 知道要在列表中放入多少个项目,那么您可以通过向 CSS 添加少量 PHP 来让您的服务器后端变得更有趣:

<?php header('Content-type: text/css'); 
  if (isset($_GET['navcount']) && $_GET['navcount'] != "") {
    $navcount = $_GET['navcount'];
  } else { $navcount = 5.0; } // Default value
?>
/* ... your css code here... */
nav[role="navigation"] li {
  float: left;
  width: <?php echo (100.0/$navcount); ?>%;
}

然后,您从 HTML 中请求这样的 CSS/PHP 脚本:

<link rel="stylesheet" type="text/css" href="/path/to/style.php?navcount=5" />

有一些很棒的工具可用于编写可以很好地混合到 CSS 中的样式表,有些甚至提供 PHP 实现来动态地执行此操作。目前最强的 CSS 扩展是Sass http://sass-lang.com/,它正是您正在寻找的语法。我建议使用 SassCompass http://compass-style.org/,这是 Sass 的一个框架,确实给了它一些好处。您可以使用 PHP 将 Sass 即时解析为 CSSphamlp http://code.google.com/p/phamlp/

尽管 Compass(和 Sass)都是很棒的工具,但将它们插入现有项目可能会带来更多麻烦,而不是其价值。您可能只想使用 Javascript 执行简单的逻辑。

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

带有可变参数的动态CSS? (是否可以?) 的相关文章

随机推荐

  • 无法搜索联系人

    所以我制作了一个静态联系人列表 并尝试添加搜索栏 但是我无法使用搜索栏搜索联系人 当我单击搜索栏时 它会打开但随后关闭 键盘会弹出一会儿 然后就会关闭 这个想法是使搜索具有预测性 因此当输入名称时 它将根据数据库中的名称列出已关闭的名称 有
  • 删除 JSON 元素

    我想从 JSON 中删除 JSON 元素或一整行 我有以下 JSON 字符串 result FirstName Test1 LastName User FirstName user LastName user FirstName Ropbe
  • Haskell:映射函数应用

    我在 Haskell 中进行的部分计算会产生映射的函数列表Float to Float 我想对所有这些函数应用一个参数 如下所示 x Float functions Float gt Float map f gt f x functions
  • 如何检查空结构?

    我定义了一个结构体 type Session struct playerId string beehive string timestamp time Time 有时我给它分配一个空会话 因为 nil 是不可能的 session Sessi
  • matlab 脚本中是否使用了某些 matlab 例程?

    我正在运行一个大的 m 文件 该文件不是我自己编写的 并且取决于某些子函数 我想知道所有嵌套函数中的任何位置是否使用了特定函数 在我的例子中是函数 eig m 用于计算特征值 有没有快速的方法来做到这一点 亲切的问候 科恩 您可以使用半文档
  • 如何编写 GraphQL 查询以从 github 检索所有工作流程/运行

    如何编写 GraphQL 查询以从 github 检索所有工作流程 运行 我尝试下面的查询来获取节点 id organization login abc repositories first 100 nodes id name 和下面的查询
  • Microsoft Teams:获取用户的时区?

    我正在为 MS Teams 开发一个机器人 我希望了解用户的时区 以便在适当的时间 例如 不是在半夜 传递消息 我没有在机器人框架 REST API 中找到合适的东西 虽然我们收到的消息包含 clientInfo country 属性 这是
  • 枚举另一个会话上用户桌面的 Windows

    我有一个简单的问题让我发疯 我有一个用 C 编写的 Windows 服务 它应该在 XP Vista 和 7 上运行 并且能够枚举当前用户桌面的窗口 如果有 以进行监控 So far 我用过EnumDesktopWindows通过IntPt
  • XmlSerializer序列化接口的通用列表

    我正在尝试使用 XmlSerializer 来保存 List T 其中 T 是一个接口 序列化器不喜欢接口 我很好奇是否有一种简单的方法可以使用 XmlSerializer 轻松序列化异构对象列表 这就是我想要的 public interf
  • 使用 ColdFusion 对单点登录数据进行签名

    对于这篇文章的长度 我提前表示歉意 我对这个问题的了解还不够 无法正确确定具体问题实际上是什么 但无论如何 我们一直在使用 Leigh 提供的步骤和建议来调用我们的会员 API 来查询有关我们会员的信息 加入日期 会员类型等 here ht
  • 使用 Python 的 select 模块检查是否有更多数据可以从文件描述符中读取

    我有一个程序 它在线程中创建一个子进程 以便线程可以不断检查特定的输出条件 来自 stdout 或 stderr 并调用适当的回调 而程序的其余部分继续 这是该代码的精简版本 import select import subprocess
  • Toast 通知失败,模拟器

    我在这里使用 toast 通知示例 http code msdn microsoft com windowsapps Toast notifications sample 52eeba29 http code msdn microsoft
  • 将行添加到 WPF 数据网格,其中列直到运行时才知道

    我正在尝试将数据添加到数据网格 事实上 任何在网格中呈现数据的控件都可以 但列 名称和数字 直到运行时才知道 我知道如何创建的专栏 例如 DataGridTextColumn textColumn new DataGridTextColum
  • Eclipse Helios 忽略断点

    Eclipse 现在快把我逼疯了 这可能是一件微不足道的事情 但我就是不明白 每当我想添加断点时 常规图标都会在编辑器和断点视图中被划掉 正如您可能已经猜到的那样 这严格来说并不是一个图形问题 调试时断点会被忽略 断点的属性也没有帮助 任何
  • MongoDB:使用不同的值进行更新和插入

    一些背景信息 我为每个用户都有一个文档 其中包含一个数组 其中包含与用户相关的最新 20 个事件 由于 MongoDB 没有此功能 限制文档内的数组 我将推送我的事件并弹出最新的事件 我的问题 初始化文档 又名用空值填充数组 我想原子地 创
  • JDODetachedFieldAccessException:您刚刚尝试访问字段“附件”,但在分离对象时该字段尚未分离

    实体类 public class CustomerSurvey implements Serializable Id GeneratedValue strategy GenerationType SEQUENCE generator CUS
  • “互斥锁”到底有什么作用?

    您可以在此链接中看到一个有趣的表格 http norvig com 21 days html answers http norvig com 21 days html answers 该表描述 互斥锁 解锁 25 nanosec 从主存中获
  • 如何从 Laravel 中的 hasMany() 关系中获取所有结果?

    例如 我有一个产品 还有一个基础产品 在产品模型中 我指定了以下内容 In class Product public function BaseProduct return this gt belongsTo BaseProduct Bas
  • AADSTS50012:从测试应用程序转移到生产时提供了无效的客户端密钥

    我在 Azure 门户下注册了两个应用程序 测试版本和生产版本 我的测试应用程序与我从 Azure 门户的测试应用程序详细信息中获取的客户端 ID 和 ClientSecret AppKey 配合得很好 然而 当我转移到生产应用程序并将 C
  • 带有可变参数的动态CSS? (是否可以?)

    我正在尝试创建一个菜单系统 该系统会根据有多少 li 条目水平动态调整自身大小以进行填充 我正在使用 XSLT 动态创建网页 我的想法是这是否可以在 CSS 中完成 这是我专门用于 HTML 页面的 CSS nav role navigat