Mearns Learns

Table Mountain built with blocks

SVG used on site

This is the code for the SVG images used on this site.

SVG fundamentals

Capital letters mean absolutely positioned (e.g. draw a line to the exact coordinate x)
Lower case letters mean relatively positioned
path = defines a path
style = sets a style for path
id = Id of path
width = width
height = height
x = x position (right/left)
y = y position (down/up)
d = path to be drawn
m = move to x right, y down (negative values are reversed left, up)

Top of Square
h = horizontal line to relative position x
a = elliptical arc curve
Right side of square
v = vertical line to
a = elliptical arc curve
Bottom of Square
h = horizontal line to relative position x
a = elliptical arc curve
Left side of square
v = vertical line to
a = elliptical arc curve
z = close path by drawing stright line back to start

The way to go is, define the object in defs and then reuse it.

<use href="#square00" transform="translate(50 100)"  />

IMPORTANT The <style> set in the <def> tag cannot be changed at the <use> tag level

X in a circle

The image and code for an X in a circle.
The line colour has been changed to black, so that it is visible against the background.

SVG image of circle around an X SVG image of circle around an X

<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" fill="none" stroke="#fff" stroke-width="2" >
<g>
    <path d="M19 18 l26 26"/>
    <path d="M19 44 l26-26"/>
</g>
    <circle cx="32" cy="32" r="31"/>
</svg>

Table mountain

The image and code for the image of Table mountain with animated cable cars.
The code includes comments.

SVG image of table mountain SVG image of table mountain

<svg
   class="square_tbl_mtn"
   width="100%"
   height="100%"
   viewBox="0 0 810 100"
   version="1.1"
   id="svg5"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink">

<defs>
    <style type="text/css">
    .square_tbl_mtn {
        --FillColor: #fbc02dff;
        --FillOpacity: 0.6;
        --StrokeColor: #000000;
        --StrokeWidth: 1;
    }
    </style>
</defs>

<defs>
    <g id = "rect00" class = "unitrect00">
        <rect id="square00" 
            width="10" 
            height="10" 
            rx="1.3"
            fill="var(--FillColor)" 
            fill-opacity = "var(--FillOpacity)" 
            stroke = "var(--StrokeColor)"
            stroke-width = "var(--StrokeWidth)"
        />
        <rect id="square01" 
            width="4" 
            height="4" 
            rx="1.3"
            fill="var(--FillColor)" 
            fill-opacity = "var(--FillOpacity)" 
            stroke = "var(--StrokeColor)"
            stroke-width = "var(--StrokeWidth)"
        />
    </g>
</defs>

<g class="m-down">
    <!-- Devils Peak -->
    <use href="#square00" transform="translate(0 90)" />
    <use href="#square00" transform="translate(10 90)" />
    <use href="#square00" transform="translate(20 90)" />

    <use href="#square00" transform="translate(20 80)" />
    <use href="#square00" transform="translate(30 80)" />
    <use href="#square00" transform="translate(40 80)" />

    <use href="#square00" transform="translate(40 70)" />
    <use href="#square00" transform="translate(50 70)" />
    <use href="#square00" transform="translate(60 70)" />

    <use href="#square00" transform="translate(60 60)" />
    <use href="#square00" transform="translate(70 60)" />
    <use href="#square00" transform="translate(80 60)" />
    
    <use href="#square00" transform="translate(80 50)" />
    <use href="#square00" transform="translate(90 50)" />
    <use href="#square00" transform="translate(100 50)" />

    <use href="#square00" transform="translate(100 40)" />
    <use href="#square00" transform="translate(110 40)" />
    <use href="#square00" transform="translate(120 40)" />

    <use href="#square00" transform="translate(120 30)" />
    <use href="#square00" transform="translate(130 30)" />
    <use href="#square00" transform="translate(140 30)" />

    <use href="#square00" transform="translate(140 20)" />
    <use href="#square00" transform="translate(150 20)" />
    
    <use href="#square00" transform="translate(150 10)" />
    <use href="#square00" transform="translate(160 10)" />
    <use href="#square00" transform="translate(170 10)" />

    <use href="#square00" transform="translate(160 0)" />
    <!-- Top of Devils Peak -->

    <use href="#square00" transform="translate(170 20)" />
    <use href="#square00" transform="translate(180 20)" />
    
    <use href="#square00" transform="translate(180 30)" />
    <use href="#square00" transform="translate(190 30)" />
    <use href="#square00" transform="translate(200 30)" />

    <use href="#square00" transform="translate(200 40)" />
    <use href="#square00" transform="translate(210 40)" />
    <use href="#square00" transform="translate(220 40)" />
    <!-- Bottom of Devils Peak-->

    <!-- Table Mountain to Plattekloof -->
    <use href="#square00" transform="translate(220 30)" />

    <use href="#square00" transform="translate(230 20)" />

    <use href="#square00" transform="translate(240 10)" />
    <use href="#square00" transform="translate(250 10)" />
    <use href="#square00" transform="translate(260 10)" />
    <use href="#square00" transform="translate(270 10)" />
    <use href="#square00" transform="translate(280 10)" />
    <use href="#square00" transform="translate(290 10)" />
    <use href="#square00" transform="translate(300 10)" />
    <use href="#square00" transform="translate(310 10)" />
    <use href="#square00" transform="translate(320 10)" />
    <use href="#square00" transform="translate(330 10)" />
    <use href="#square00" transform="translate(340 10)" />
    <use href="#square00" transform="translate(350 10)" />
    <use href="#square00" transform="translate(360 10)" />
    <use href="#square00" transform="translate(370 10)" />
    <use href="#square00" transform="translate(380 10)" />
    <use href="#square00" transform="translate(390 10)" />
    <use href="#square00" transform="translate(400 10)" />
    <use href="#square00" transform="translate(410 10)" />
    <use href="#square00" transform="translate(420 10)" />
    <use href="#square00" transform="translate(430 10)" />
    <use href="#square00" transform="translate(440 10)" />

    <!-- Plattekloof -->
    <use href="#square00" transform="translate(440 20)" />
    <use href="#square00" transform="translate(430 30)" />
    <use href="#square00" transform="translate(420 40)" />
    <use href="#square00" transform="translate(410 50)" />

    <!-- Plattekloof to Cable Station -->
    <use href="#square00" transform="translate(450 10)" />
    <use href="#square00" transform="translate(460 10)" />
    <use href="#square00" transform="translate(470 10)" />
    <use href="#square00" transform="translate(480 10)" />
    <use href="#square00" transform="translate(490 10)" />
    <use href="#square00" transform="translate(500 10)" />
    <use href="#square00" transform="translate(510 10)" />
    <use href="#square00" transform="translate(520 10)" />
    <use href="#square00" transform="translate(530 10)" />
    <use href="#square00" transform="translate(540 10)" />
    <use href="#square00" transform="translate(550 10)" />
    
    <!-- Cable Station -->
    <use href="#square00" transform="translate(540 0)" />

<!-- Cable Car 1 -->
    <use href="#square01" transform="translate(543 3)">
	<animateTransform
            attributeName="transform" type="translate"
            values="0 0;
					10 60;
                     0 0"
            additive="sum"
            dur="30s"
            repeatCount="indefinite" />
    </use>

    <!-- Lower Cable Station -->
    <use href="#square00" transform="translate(550 60)" />

	<!-- Cable Car 2 -->
    <use href="#square01" transform="translate(553 63)">
	<animateTransform
            attributeName="transform" type="translate"
            values="0 0;
					-10 -60;
                     0 0"
            additive="sum"
            dur="30s"
            repeatCount="indefinite" />
    </use>

    <!-- Cable Station to Kloofnek -->
    <use href="#square00" transform="translate(550 20)" />  
    <use href="#square00" transform="translate(560 20)" />  

    <use href="#square00" transform="translate(570 30)" />  

    <use href="#square00" transform="translate(570 40)" />  
    <use href="#square00" transform="translate(580 40)" />  

    <use href="#square00" transform="translate(580 50)" />  
    <use href="#square00" transform="translate(590 50)" />  
    <use href="#square00" transform="translate(600 50)" />  

    <!-- Kloofnek -->
    <use href="#square00" transform="translate(600 60)" />  
    <use href="#square00" transform="translate(610 60)" />  
    <use href="#square00" transform="translate(620 60)" />  
    <use href="#square00" transform="translate(630 60)" />  

    <use href="#square00" transform="translate(630 70)" />  
    <use href="#square00" transform="translate(640 70)" />  
    <use href="#square00" transform="translate(650 70)" />  
    <use href="#square00" transform="translate(660 70)" />
    <use href="#square00" transform="translate(670 70)" />  

    <!-- Kloofnek  to Lions Head-->
    <use href="#square00" transform="translate(660 80)" />  
    
    <use href="#square00" transform="translate(650 90)" />
    
    <use href="#square00" transform="translate(670 60)" />
    <use href="#square00" transform="translate(680 60)" />  
    
    <use href="#square00" transform="translate(690 50)" />
    <use href="#square00" transform="translate(700 50)" />  
    <use href="#square00" transform="translate(710 50)" />
    <use href="#square00" transform="translate(720 50)" />

    <!-- Lions Head -->
    <use href="#square00" transform="translate(700 40)" />  
    <use href="#square00" transform="translate(710 40)" />
    
    <use href="#square00" transform="translate(720 60)" />
    <use href="#square00" transform="translate(730 60)" /> 
    <use href="#square00" transform="translate(740 60)" />
    
    <use href="#square00" transform="translate(740 70)" />
    <use href="#square00" transform="translate(750 70)" /> 
    <use href="#square00" transform="translate(760 70)" />
    
    <use href="#square00" transform="translate(760 80)" />
    <use href="#square00" transform="translate(770 80)" /> 
    <use href="#square00" transform="translate(780 80)" />
    
    <use href="#square00" transform="translate(780 90)" />
    <use href="#square00" transform="translate(790 90)" /> 
    <use href="#square00" transform="translate(800 90)" />
</g>
</svg>