- From: Eric Eggert <ee@w3.org>
- Date: Mon, 04 Feb 2019 10:45:39 +0100
- To: "Wayne Dick" <wayneedick@gmail.com>
- Cc: "Patrick H. Lauke" <redux@splintered.co.uk>, "GLWAI Guidelines WG org" <w3c-wai-gl@w3.org>
- Message-ID: <4F8CD2A9-DC50-40EF-8C0E-B18F13F89FB4@w3.org>
(W3C hat off, but we have code examples on our pages, so this is quite
relevant.)
Hi Wayne, hi group,
On 3 Feb 2019, at 23:16, Wayne Dick wrote:
> This is a better version:
> You can see it at:
> http://nosetothepage.org/reflowDisplayCode.html
While this works for the code that is displayed, quite ordinary
statements, for example in JavaScript might not fit:
```
<div class="code3">
006
<span></span>
var toggles = document.querySelectorAll('.toggle');
</div>
```
There is no natural breaking point in `document.querySelectorAll(`. A
space or return is a syntax error.
On the other hand, your example sacrifices copy & paste, a functionality
that helps many people to make code examples more accessible to them.
And for screen readers it adds the line numbers which might be a
distraction.
I’d love us to find a nice solution for the problem, but we have to
keep in mind to make it easy for people to implement. `<pre>` is simple
because it preserves spacing, which can break the code in some
languages. For example in YAML, using CSS for indentation cannot work
because the spaces have meaning.
While I think the creator of the content needs to decide how to make the
code readable, the best advice for now might be to use `word-wrap:
break-word;` on `<pre>` in small viewports to avoid horizontal scrolling
at all.
Eric
> Best Wayne
>
> Here is the code:
> <!DOCTYPE html>
> <html lang="en">
> <head>
> <meta charset="UTF-8">
> <title>Reflow Code</title>
> <style>
> .code1 {display: grid;
> grid-template-columns: 1.8em 1em 1fr}
> .code2 {display: grid;
> grid-template-columns: 1.8em 2em 1fr;}
> .code3 {display: grid;
> grid-template-columns: 1.8em 3em 1fr;}
> @media all and (max-width: 800px) {
> .code1 { grid-template-columns: 1.8em 0.75em 1fr;}
> .code2 {grid-template-columns: 1.8em 1.5em 1fr;}
> .code3 {grid-template-columns: 1.8em 2.25em 1fr;}}
> @media all and (max-width: 450px) {
> .code1 { grid-template-columns: 1.8em 0.5em 1fr;}
> .code2 {grid-template-columns: 1.8em 1em 1fr;}
> .code3 {grid-template-columns: 1.8em 1.5em 1fr;}}
> div {
> margin: 0.4em 0 0.4em 0;
> }
> html {font-size: 150%;}
> </style>
> </head>
> <body>
> <p>This grid example was modified from Eric Meyer <em>Grid Layout in
> CSS,
> Figure 1.4</em></p>
> <div class = "code1">001<span></span>for (var i =0; i < sLst.length;
> i++) {
> </div >
> <div class = "code2">002<span></span>str+=sheet(sLst[i]);
> </div ><div class="code2">003<span></span>if (i < sLst.length-1)
> {</div>
> <div class="code3">004<span></span>// recursive case inserts comma
> separator</div>
> <div class="code3">005<span></span>str+=com;</div>
> <div class="code3">006<span></span>}</div>
> <div class="code2">007<span></span>}</div>
> </body>
> </html>
>
>
> On Sat, Feb 2, 2019 at 2:45 PM Wayne Dick <wayneedick@gmail.com>
> wrote:
>
>> The following code gives code that word wraps and preserves
>> indentation up
>> 320 CSS pixels. It really needs media queries for best results but I
>> left
>> them out for brevity. It is long anyway. This is my ideal of
>> accessible
>> output.
>>
>> Best, Wayne
>>
>> <!DOCTYPE html>
>> <html lang="en">
>> <head>
>> <meta charset="UTF-8">
>> <title>Reflow Code</title>
>> <style>
>> .code1 { display: grid;
>> background: #FCC;
>> padding: 0;
>> grid-template-rows: 1fr;
>> grid-template-columns: 0.25fr 1.75fr 70fr;}
>> .code2 {display: grid;
>> background: #FCC;
>> padding: 0;
>> grid-template-rows: 1fr;
>> grid-template-columns: 0.25fr 3.75fr 68fr;}
>> .code3 { display: grid;
>> background: #FCC;
>> padding: 0;
>> grid-template-rows: 1fr;
>> grid-template-columns: 0.25fr 5.75fr 66fr;}
>> </style>
>> </head>
>> <body>
>> <p>This grid example was modified from Eric Meyer <em>Grid Layout in
>> CSS,
>> Figure 1.4</em></p>
>> <p class = "code1">001<span></span>for (var i =0; i < sLst.length;
>> i++)
>> {str+=sheet(sLst[i]);}
>> </p >
>> <p class="code2">002<span></span>if (i < sLst.length-1) {</p>
>> <p class="code3">003<span></span>// recursive case inserts comma
>> separator</p>
>> <p class="code3">004<span></span>str+=com;</p>
>> <p class="code3">005<span></span>}</p>
>> <p class="code2">006<span></span>}</p>
>> </body>
>> </html>
>>
>> On Sat, Feb 2, 2019 at 2:12 PM Wayne Dick <wayneedick@gmail.com>
>> wrote:
>>
>>> Hi Patrick,
>>>
>>> I agree about line numbers but it is a small problem. You can pull a
>>> code
>>> file into almost any word processor. Make the text an ordered list
>>> and save
>>> it to text. You get a line numbered text file of your code. I just
>>> did it
>>> in Google Docs.
>>>
>>> Best, Wayne
>>>
>>
--
Eric Eggert
Web Accessibility Specialist
Web Accessibility Initiative (WAI) at World Wide Web Consortium (W3C)
Received on Monday, 4 February 2019 09:45:45 UTC