小编Ada*_*ura的帖子

如何共享常见的 CSS 样式

在我的页面上,我有几个块(div)具有相同的样式backgroundborder菜单面板,信息面板,页脚面板,...)。

\n\n

现在我只想编写该样式一次,而不是为每个面板重复它。但我没有看到任何合适的方法来做到这一点。

\n\n
\n\n

我研究的一种方法是引入一个专门的类(例如panelClass)来捕获常见的面板样式。然后在 (X)HTML 中,我只需将该类添加到每个应该是面板的元素中。

\n\n

但这感觉不对。毕竟我会在 (X)HTML 中“揭示实现”。我不再能够轻松地透明地更改内容,因为这需要修改 (X)HTML。

\n\n

更不用说它引入了类顺序的问题(以及如果需要的话 CSS 属性将被覆盖的顺序)。

\n\n

编辑:(对 kolin 答案的扩展解释)

\n\n

通过 \xe2\x80\x9crevealing 实现\xe2\x80\x9d 我的意思是 (X)HTML (\xe2\x80\x9cthe content\xe2\x80\x9d) 与 CSS (\xe2\x80 \x9c演示文稿\xe2\x80\x9d)比我希望的那样。也许我\xe2\x80\x99m追求一个遥不可及的理想(甚至可能是一个不真实的或虚拟的理想!),但我\xe2\x80\x99m试图将\xe2\x80\x9c内容\xe2\x80\x9d与\分开xe2\x80\x9c演示文稿\xe2\x80\x9d。

\n\n

因此,拥有一个类menu并不坏,因为它描述的是 \xe2\x80\x9ccontents\xe2\x80\x9d 而不是 \xe2\x80\x9cpresentation\xe2\x80\x9d。而使用类似的类(我从引用的文章和该网站上的其他一些文章中了解到的)menu box bordered left_column是不好的,因为它将演示与内容混合在一起。一旦开始添加此类类,您很可能会将该 CSS 直接添加到style属性中。这肯定会需要更多的工作和无法维护的结果,但从概念上讲(当涉及内容-呈现分离时)它不会\xe2\x80\x99 产生影响。

\n\n

现在我确实意识到,在现实生活中,对于真实的页面(丰富且漂亮),几乎不可能将内容与演示完全分开。但你仍然可以(应该?)至少尝试一下。

\n\n

另外看看文章末尾的 \xe2\x80\x9cBut\xe2\x80\x9d应用于 CSS 的单一责任原则。在我看来,island他使用的课程已经是演示性的,因为它没有描述内容。它描述了如何显示它。一旦你看到他在内容上没有共同点的元素上使用(或可能已经使用)该类的范围有多广,这一点立即显而易见。

\n\n

结束编辑

\n\n
\n\n

另一种方法是使用选择器分组。所以我会有类似的东西:

\n\n
#menu, #info, #footer {\n …
Run Code Online (Sandbox Code Playgroud)

css

5
推荐指数
1
解决办法
7414
查看次数

Java Makefile 解析器替代品

Java Makefile Parser库是否有任何替代方案?

我可能需要一个 Java 库来解析 make 文件,以便提取一些信息,甚至在给定环境中模拟执行。快速查找表明只有 Java Makefile Parser。但也许我没有找对地方。那么还有其他图书馆吗?

请注意,我并不是说 Java Makefile Parser 有任何问题。我什至还没有尝试过。我只想知道我的选择。

java makefile

5
推荐指数
0
解决办法
480
查看次数

带有FATAL_ERROR的CMake多行消息

CMake文档(例如当前版本3.11.2)状态

使用简单的标记语言显示CMake警告和错误消息文本。非缩进文本以换行符分隔的换行段落的格式设置。缩进的文本被认为是预格式化的。

但是,它没有提及任何标记格式。除非是“非缩进”还是“缩进”,否则都将涉及“简单标记”。

无论如何,我无法使其与FATAL_ERROR模式一起使用。

此外,我注意到with STATUSmode消息打印有前导--(两个破折号和空格)。而与FATAL_ERROR在该消息中的每个换行变成两条线,其中(IMHO)看上去可怕。

现在,我有一条多行消息,其中列出了错误所在CMAKE_BUILD_TYPE和可接受的值。由于上述问题,我最终将消息打印为,STATUS并在随后的行中缩进了三个空格(因此它们与对齐--)。然后,我FATAL_ERROR仅重复一个简单的“标题行”(说明CMAKE_BUILD_TYPE错误)。控制台输出和都可以接受cmake-gui。(尽管在cmake-gui... 上不需要3个空格缩进)

但是,我很惊讶地描述了这个主题。似乎已经很久了-例如,请参阅问题[CMake]带有SEND_ERROR和FATAL_ERROR的多余空白行吗?至今仍未解决将近9年...

是否有处理此类消息的良好实践,建议或技巧?还是应该首先避免使用它们?

cmake

5
推荐指数
1
解决办法
1658
查看次数

右值引用和构造函数参数

让我们考虑一个简单的类

template< typename T >
class Wrapper {
public:
  // Constructors?
private:
  T wrapped;
};
Run Code Online (Sandbox Code Playgroud)

应该使用什么构造函数才能有效?


在C++ 0x之前,会有一个构造函数采用以下任一方法:

  1. const reference(T const&) - 如果type T为"heavy",
  2. 或value(T) - 如果type T为"light".

确定类型T是"重"还是"轻"并不容易.

可以假设只有内置类型(ints/floats/...)是"轻"的.但这并不完全正确,因为我们自己Wrapper<int>最有可能也应被视为"轻型"类型.

boost::call_traits通过允许类型创建者将类型标记为"轻"(通过提供适当的call_traits专业化),库提供了一些克服此困难的方法.否则它将被视为"沉重".似乎可以接受.


但是C++ 0x使它变得更糟.因为现在你还有rvalue reference(T&&),它允许有效地获取(某些)"重"对象.

因此,你必须选择:

  1. 只是const reference(T const&) - 如果类型T是"重"并且不支持移动语义(因为没有任何一个 - 就像大POD一样 - 或者没有写入并且你对它没有影响),
  2. const reference(T const&)和rvalue reference(T&&) - 如果type T为"heavy"并且支持移动语义,
  3. 只是value(T) - 如果type …

c++ constructor rvalue-reference c++11

4
推荐指数
1
解决办法
678
查看次数

是否有可能扭转语法?

对于给定的无上下文语法,是否可以获得"反向语法"?

"反向语法"是指一种语法,它接受由原始语法语言中的反转词组成的语言.

例如,遵循语法

root = r1 [r2] *r3
r1   = "a"
r2   = "b"
r3   = "cd"
Run Code Online (Sandbox Code Playgroud)

反转时看起来像这样:

root = *r3 [r2] r1
r1   = "a"
r2   = "b"
r3   = "dc"
Run Code Online (Sandbox Code Playgroud)

我问这个的原因是我想向后解析字符串(从结束到开始).为此,我需要"反向语法".

那么有一种系统的方法来获得"反向语法"吗?

将恢复每一条规则的工作吗?对我来说似乎如此.但我预计,在我找不到任何东西时会在某处说出这样的"引理".所以也许它只在简单的例子中出现过?

grammar parsing context-free-grammar

4
推荐指数
1
解决办法
882
查看次数

将修订与Redmine问题联系起来

有没有办法手动将修订/提交与Redmine问题关联?

通常我们通过使用适当格式的提交消息来做到这一点(在我们的例子中,"Resolves#...").但我忘记了它并使用了不同的信息.

我现在无权更改提交消息.即使我仍然无法删除Redmine的数据,以便再次重建它.(问题给出的方法Redmine和SVN:如何在提交发生后将修订链接到问题?).

我用"r ..."评论更新了这个问题,该评论与修订版本正确相关.但这只是一个链接.它没有生成"关联修订"作为正确的提交消息.

有没有办法手动强制Redmine看到这样的关联?

revision commit redmine

3
推荐指数
1
解决办法
1388
查看次数

新闻组 comp.lang.c++.moderated 死了吗?

根据谷歌向新闻组显示的内容comp.lang.c++.moderated,最后一篇文章现在已经快一年了(从 2016 年 5 月 23 日开始)。

大约一周前我自己写了一篇文章,到目前为止还没有发表。

同时新闻组comp.lang.c++仍然活跃(从今天开始的帖子)。

comp.lang.c++.moderated正式现已关闭?有没有替代品(除了comp.lang.c++)?

c++ newsgroup

-3
推荐指数
1
解决办法
1471
查看次数