【问题标题】:Creating a specific HTML layout创建特定的 HTML 布局
【发布时间】:2014-12-22 12:49:55
【问题描述】:

我需要在 HTML 中创建一个特定的布局。

方法如下

颜色仅用于演示目的。我想创建一个可编辑区域,该区域以不可编辑文本内联开始,并在不可编辑文本下方的下一行继续。

这是创建模板的要求,用户将在其中直接添加删除文本。

Normal Divs 和 Sections 在这里没有帮助我,谁能给我一些指示?

我已经尝试过以下事情,

  • 将Div 设置为contenteditable,其中包含不可编辑的文本
  • 我保留了 Span 并试图将其移到 Div 上,这是一个不好的解决方案,我不得不对 div 中的文本使用偏移量,这会破坏第一行之后的所有行。

这是一个动态生成的布局,所以我不能随时准备好 CSS 尺寸。

【问题讨论】:

  • 您的问题是什么?你试过什么?还是您希望我们为您制作。
  • 如果你能做到,那就太好了。我特别不擅长 HTML。我尝试了以下操作 - 使用带有 contentEditable 的顶级 div,但它允许用户编辑不可编辑的文本 - 尝试使用 Div 以及跨度和浮动,但它创建了简单的基于列的布局。
  • 您可能想为这类事情聘请前端网络开发人员。
  • @merqri 你能看看我的回答吗?

标签: css html


【解决方案1】:

如果您可以将图像用于不可编辑的文本,则可以使用图像作为背景并对其进行处理:

body {font-family: 'Verdana'; font-size: 10pt;}
.editable {background: url('http://i.imgur.com/cAZvApm.png') -1px 1px no-repeat; text-indent: 8.5em; margin: 0 0 10px;}
<div contenteditable class="editable">Pages you view in incognito tabs won’t stick around in your browser’s history, cookie store, or search history after you’ve closed all of your incognito tabs. Any files you download or bookmarks you create will be kept. Learn more about incognito browsing.</div>

<div>Now try to edit the above text and check out!</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
  if (document.body.createTextRange) {
    var range = document.body.createTextRange();
    range.moveToElementText(document.querySelectorAll(".editable")[0]);
    range.select();
  } else if (window.getSelection) {
    var selection = window.getSelection();        
    var range = document.createRange();
    range.selectNodeContents(document.querySelectorAll(".editable")[0]);
    selection.removeAllRanges();
    selection.addRange(range);
  }
  document.querySelectorAll(".editable")[0].focus();
</script>

预览:

【讨论】:

  • 嘿,这是一个开始,但是当我在第一行按 Enter 时它中断了。我创建了一个列视图。因为插入符号保持在第一行的开头下方。另外,我不确定是否会创建图像。内容是动态呈现的。它有点像一个模板引擎,它在页面上创建了可编辑和不可编辑区域的混合体。
  • @merqri 这就是浏览器的处理方式。尝试按Ctrl + Enter 而不是单独按Enter。看看有没有用?
  • 这就像一个魅力。我仍然不确定使用图像。考虑到数据的动态性质,将涉及大量工作。有没有更好的办法?
  • 我们需要考虑这方面,因为在这种情况下需要使用大量 JavaScript 来动态生成“效果”。我不会说这是不可能的,但我会说,这是有可能的。我可以帮你! :)
猜你喜欢
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多